S t o n e 0 Denunciar post Postado Setembro 29, 2008 |Outra Dúvida Fabyo, tenho a opção de alterar notícia na pagina restrita, só que ele não altera se o campo imagem estiver vazio, tem como eu chamar do bd o nome da foto no form do arquivo ou fazer uma verificação se o campo estiver vaziu ele não faz insert da imagem no bd? Compartilhar este post Link para o post Compartilhar em outros sites
tipoloko 0 Denunciar post Postado Outubro 3, 2008 daew galera tava olhando o script eh show de bola e tava com um galhao para mandar a $nome_foto para o bd dai eu tava pensando ... e tentei algo banal ..... mandar por session e nao eh q deu certo... eu fiz assim reduz_imagem_png($this->arquivo['tmp_name'], 400, 300, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_png($this->arquivo['tmp_name'], 120, 90, $diretorio_p.$nome_thumb); } echo "<span style=\"color: white; border: solid 1px; background: purple;\">".$this->erro[$this->arquivo['error']]."</span>"; $ft = $diretorio . $nome_foto; $_SESSION['foto'] = $ft;e no sql eu fiz assim include_once('class.upload.php'); $upload = new Upload(); $upload->Envia_Arquivo(); if(IsSet($_SESSION["foto"])) $nome = $_SESSION["foto"]; ................... $sql = "insert into item values (null, $idcat, $idc, '$ite_nom', '$ite_des', '$ite_val','$nome')"; espero que isso ajude alguem pq pra mim ajudou bastante valeu fabyo Compartilhar este post Link para o post Compartilhar em outros sites
joao vitor 0 Denunciar post Postado Outubro 9, 2008 cara muiiiiiiiiiiito bom.... se puder me add no msn pra gente conversar... vitordahora@gmail.com Compartilhar este post Link para o post Compartilhar em outros sites
DeToNeS 0 Denunciar post Postado Novembro 15, 2008 Pessoal estou utilizando o script modificado para uso de PNG e GIF! Só que o mesmo apresentou erro no upload de arquivos PNG! Caso alguem tenha o mesmo problema! Aqui ta a solução! return imagepng($image_p, $nome_foto, 100);Mudar para return imagepng($image_p, $nome_foto, 9); Retirei a solução daqui, se alguem quiser dar uma olhada, o responsável pela correção explica melhor! http://forum.imasters.com.br/index.php...=3&t=308307 Espero ter ajudado! Compartilhar este post Link para o post Compartilhar em outros sites
DeToNeS 0 Denunciar post Postado Novembro 15, 2008 Salve galera, Fiz uma pequena modificação no código dentro do class.upload.php, $get = getimagesize($this->arquivo['tmp_name']); if(($get["mime"] != "image/jpeg") AND ($get["mime"] != "image/gif") AND ($get["mime"] != "image/png")) { echo "<span style=\"color: white; border: solid 1px; background: red;\">Este Arquivo Não é um Tipo de Imagem Válida. Aceitos ( .jpg, .gif, .png)!</span>"; exit; } adicionei uma verificação do tamanho da imagem, no caso, abaixo do código que está acima, $size = filesize($this->arquivo['tmp_name']); if( $size >= 204800 ) { echo "<span style=\"color: white; border: solid 1px; background: red;\">Este Arquivo Ultrapassa o Tamanho Limite(200kb)!</span>"; exit; } Devido a minha necessidade de manter o site navegável e não lotado de imagens gigantescas, já que eu utilizo também uma imagem em seu tamanho original! ^^ E tenho uma dúvida, não vi qual a real aplicação da seguinte parte e tambem não sei como manipulala! var $erro = array ( "0" => "Imagem Enviada Com Sucesso!!", "1" => "O Arquivo é Maior Que o Permitido pelo Servidor!", "2" => "O Arquivo é Maior Que o Permitido pelo Sistema!", "3" => "Imagem Enviada Parcialmente!", "4" => "A Imagem Não Foi Enviada!"); Se alguém puder me ajudar agradeço! Tenham uma boa noite! Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Novembro 21, 2008 Como eu consigo aproveitar esse código para multiplos uploads??? classUpload.php <?php set_time_limit(0); class Upload { var $arquivo = ""; var $erro = array ( "0" => "Upload realizado com sucesso!", "1" => "O arquivo é maior que o permitido pelo servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi realizado nenhum upload!"); function Verifica_Upload() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; if(!is_uploaded_file($this->arquivo['tmp_name'])) { return false; } $get = getimagesize($this->arquivo['tmp_name']); if(($get["mime"] != "image/jpeg") and ($get["mime"] != "image/gif") and ($get["mime"] != "image/png")) { echo "<div id='no_succes' align='center'><span class='font_texto_branco'>O arquivo selecionado não é uma imagem válida.</span></div>"; echo"<meta http-equiv='refresh' content='2;URL=java script:history.go(-1);' />"; // REDIRECIONA A PAGINA exit; } return true; } function Envia_Arquivo() { if($this->Verifica_Upload()) { $this->gera_fotos(); return true; } else { echo "<div id='no_succes' align='center'><span class='font_texto_branco'>".$this->erro[$this->arquivo['error']]."</span></div>"; } } function gera_fotos() { $diretorio = "upload/"; $diretorio_g = "upload/"; $diretorio_p = "upload/thumb/"; if(!file_exists($diretorio)) { mkdir($diretorio); } if(!file_exists($diretorio_g)) { mkdir($diretorio_g); } if(!file_exists($diretorio_p)) { mkdir($diretorio_p); } $get2 = getimagesize($this->arquivo['tmp_name']); /* VERIFICAR SE A IMAGEM GIF ou JPG ou PNG*/ $aux_tipo_imagem = $get2["mime"]; /* VERIFICAR SE A IMAGEM GIF ou JPG ou PNG*/ // SE A IMAGEM FOR JPG if ($aux_tipo_imagem == "image/jpeg") { $_POST['imagem_g'] = $nome_foto = "imagem_".time().".jpg"; $_POST['imagem_p'] = $nome_thumb = "thumb_".time().".jpg"; // DEFINE RESOLUÇÃO MÁXIMA, SE A IMAGEM FOR MAIOR ELA SERÁ REDUZIDA reduz_imagem_jpg($this->arquivo['tmp_name'], 400, 300, $diretorio_g.$nome_foto); // DEFINE O TAMANHO DO THUMB reduz_imagem_jpg($this->arquivo['tmp_name'], 120, 90, $diretorio_p.$nome_thumb); } // SE A IMAGEM FOR GIF if ($aux_tipo_imagem == "image/gif") { $_POST['imagem_g'] = $nome_foto = "imagem_".time().".gif"; $_POST['imagem_p'] = $nome_thumb = "thumb_".time().".gif"; // DEFINE RESOLUÇÃO MÁXIMA, SE A IMAGEM FOR MAIOR ELA SERÁ REDUZIDA reduz_imagem_gif($this->arquivo['tmp_name'], 400, 300, $diretorio_g.$nome_foto); // DEFINE O TAMANHO DO THUMB reduz_imagem_gif($this->arquivo['tmp_name'], 120, 90, $diretorio_p.$nome_thumb); } // SE A IMAGEM FOR PNG if ($aux_tipo_imagem == "image/png") { $_POST['imagem_g'] = $nome_foto = "imagem_".time().".png"; $_POST['imagem_p'] = $nome_thumb = "thumb_".time().".png"; // DEFINE RESOLUÇÃO MÁXIMA, SE A IMAGEM FOR MAIOR ELA SERÁ REDUZIDA reduz_imagem_png($this->arquivo['tmp_name'], 400, 300, $diretorio_g.$nome_foto); // DEFINE O TAMANHO DO THUMB reduz_imagem_png($this->arquivo['tmp_name'], 120, 90, $diretorio_p.$nome_thumb); } echo "<div id='succes' align='center'><span class='font_texto_branco'>".$this->erro[$this->arquivo['error']]."</span></div>"; } } ?> Formulario.html ... <input type="file" name="arquivo" /> ... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Novembro 25, 2008 Fiz umas pequenas modificações, agora ele funciona com multiplos ulploads, deixei com 3, mas você pode mudar e colocar mais ou menos mudem a vontade, pois eu so fiz umas pequenas modificações rapidas index.php <?php if(!(file_exists("class_upload.php"))){ exit("Classe class_upload.php nao encontrada"); } else { require_once "class_upload.php"; } if($_SERVER["REQUEST_METHOD"] == "POST"){ $upload = new Upload(); $upload->Enviar_Fotos(); exit; } ?> <html> <head> <title>Upload</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="arquivo[]"><br /> <input type="file" name="arquivo[]"><br /> <input type="file" name="arquivo[]"> <input type="submit" name="Submit" value="Enviar"> </form> </body> </html> funcoes.php <?php /*Fabyo Guimaraes de Oliveira */ function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100); } ?> class_upload.php <?php set_time_limit(0); if(!(file_exists("funcoes.php"))){ exit("funcoes.php nao encontrada"); } else { require_once "funcoes.php"; } class Upload { var $arquivo = ""; var $erro = array ( "0" => "upload execultado com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo" ); function Enviar_Fotos() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; for($i = 0; $i < 3; $i++){ $name = $this->arquivo['name'][$i]; $type = $this->arquivo['type'][$i]; $tmp_name = $this->arquivo['tmp_name'][$i]; $error = $this->arquivo['error'][$i]; $size = $this->arquivo['size'][$i]; if(is_uploaded_file($tmp_name)) { $this->salvar_fotos($tmp_name, $error); } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$error]."</span><br />"; } } } function salvar_fotos($tmp_name, $error) { $diretorio = "fotos/"; if(!file_exists($diretorio)){ if(!(mkdir($diretorio))) die("Nao foi possivel criar a pasta fotos"); } $get = getimagesize($tmp_name); if($get["mime"] != "image/jpeg"){ die("<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo nao é uma imagem valida</span>"); } $nome_foto = "imagem_".microtime().".jpg"; $nome_thumb = "thumb_".microtime().".jpg"; if (!(is_writable($diretorio))) { die('O diretorio fotos não possui permissão de escrita'); } //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($tmp_name, 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($tmp_name, 120, 90, $diretorio.$nome_thumb); echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$error]."</span><br />"; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Novembro 25, 2008 Obrigado Fabyo, deu certinho... Só mais uma dúvida... Na classe como eu posso armazenar em um array as imagens para inserir depois no aquivo index.php Com um campo estava fazendo assim: $_POST['imagem_g'] = $nome_foto = "imagem_".time().".jpg"; $_POST['imagem_p'] = $nome_thumb = "thumb_".time().".jpg"; Estou fazendo assim no index.php $mySQL = new MySQL; $rsQuery = $mySQL->executeQuery("INSERT INTO links(nome, link, logo, logo_thumb, tipo) VALUES ('".$_POST['nome']."', '".$_POST['link']."', '".$_POST['imagem_g']."', '".$_POST['imagem_p']."', 'Links')"); Com multiplos ficaria como se colocasse mais 2 campos na minha tabela LOGO_02 e LOGO_THUMB_02? , Compartilhar este post Link para o post Compartilhar em outros sites
DeToNeS 0 Denunciar post Postado Novembro 27, 2008 E Ae Pessoal, La vai mais uma coisa que eu achei um tanto quanto interessante para adicionar no script! Para quem também faz upload de arquivos .PNG com fundo transparente, pode alterar essa parte! function reduz_imagem_png($img, $max_x, $max_y, $nome_foto) { list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); imagesavealpha($image_p, true); $tranparente = imagecolorallocatealpha($image_p, 0, 0, 0, 127); imagefill($image_p, 0, 0, $tranparente); $image = imagecreatefrompng($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagepng($image_p, $nome_foto, 9); } Assim as imagens se mantem transparentes por completo e não com fundo preto! Abraços pra Geral! Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Novembro 28, 2008 Pegando os nomes das fotos... Galera alterei o arquivo class_upload.php para pegar os nomes da imagem <?php set_time_limit(0); class Upload { //METODO PARA ENVIAR IMAGEM public function getImagem(){ return $this->imagem; } public function setImagem($im){ $this->imagem = $im; } //METODO PARA ENVIAR THUMB public function getThumb(){ return $this->thumb; } public function setThumb($t){ $this->thumb = $t; } var $arquivo = ""; var $thumb = ""; var $imagem = ""; ... // SE A IMAGEM FOR JPG if ($aux_tipo_imagem == "image/jpeg") { $nome_imagem = "imagem_".time().".jpg"; $nome_thumb = "thumb_".time().".jpg"; $this->imagem = $nome_imagem; $this->thumb = $nome_thumb; // DEFINE RESOLUÇÃO MÁXIMA, SE A IMAGEM FOR MAIOR ELA SERÁ REDUZIDA reduz_imagem_jpg($tmp_name, 400, 300, $diretorio_g.$nome_imagem); // DEFINE O TAMANHO DO THUMB reduz_imagem_jpg($tmp_name, 120, 90, $diretorio_p.$nome_thumb); } ?> index.php $upload = new Upload(); // ESTÂNCIA A CLASSE UPLOAD $upload->Envia_Arquivo(); // CHAMA A CLASSE $nome_imagem = $upload->getImagem();// PEGA NOME DA IMAGEM $nome_thumb = $upload->getThumb(); // PEGA NOME DA THUMB Mais ainda estou com duvida na hora inserir. EX: Quando eu faço dois uploads ele passa primeiro pela classe e substitui o nome da primeira imagem na segunda, eu queria ver se tem algum jeito de armazenar os nomes e depois passar para ser inserido $mySQL = new MySQL; // ESTÂNCIA A CLASSE MYSQL $rsQuery = $mySQL->executeQuery("INSERT INTO links(nome, link, logo, logo_thumb, logo_02, logo_thumb_02, tipo) VALUES ('".$_POST['nome']."', '".$_POST['link']."', '".$nome_imagem."', '".$nome_thumb."', '".NOME_IMAGEM2."', '".NOME_IMAGEM_THUMB2."', 'Links')"); Alguem poderia me ajudar?? , Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoInfo 1 Denunciar post Postado Dezembro 12, 2008 Pessoal, vou postar aqui algumas coisa que uni e que modifiquei para meu uso: As alterações: Enviar múltiplas imagens, e se a imagem for menor não alterar, etc. class.upload.php: <?php set_time_limit(0); // Incluo as funcões require_once ("funcoes.php"); class Upload { var $arquivo = ""; var $topico_id = topico_id; // id de algum tópico que você acabou de inserir e quer relcionar com as imagens em uma tabela diferente var $opcao_envio = opcao_envio; // Opcao usar diferente tabelas var $diretorio = diretorio; // diretorio das imagens var $erro = array ( "0" => "Imagem enviada com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo"); function Verifica_Upload() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; $num = count($_FILES['arquivo']['name']); for ($i = 0;$i < $num; $i++){ if(!is_uploaded_file($this->arquivo['tmp_name'][$i])) { return false; } $get = getimagesize($this->arquivo['tmp_name'][$i]); if(($get["mime"] != "image/jpeg") AND ($get["mime"] != "image/gif") AND ($get["mime"] != "image/png")) { echo "<span style=\"color: white; border: solid 1px; background: red;\">Tipo de Arquivo não permitido, por favor envie uma imagem jpeg, png ou gif.</span>"; exit; } return true; } } function Envia_Arquivo($xp,$yp,$xg,$yg) { if($this->Verifica_Upload()) { $this->gera_fotos($xp,$yp,$xg,$yg); return true; } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>"; } } function gera_fotos($xp,$yp,$xg,$yg) { $num = count($_FILES['arquivo']['name']); $diretorio = "../img/{$this->diretorio}/"; $diretorio_g = "../img/{$this->diretorio}/g/"; // Diretorio imagens grandes $diretorio_p = "../img/{$this->diretorio}/p/"; // Diretorio Imagens pequenas if(!file_exists($diretorio)) { mkdir($diretorio); } if(!file_exists($diretorio_g)) { mkdir($diretorio_g); } if(!file_exists($diretorio_p)) { mkdir($diretorio_p); } for ($i=0; $i < $num; $i++){ $get2 = getimagesize($this->arquivo['tmp_name'][$i]); /* Vai servir para verificar se eh GIF ou JPG ou PNG*/ $aux_tipo_imagem = $get2["mime"]; /* Vai servir para verificar se eh GIF ou JPG ou PNG*/ $gera_nome = time() + $i; if ($aux_tipo_imagem == "image/jpeg") { $nome_foto = "".$gera_nome.".jpg"; if ($this->opcao_envio == 'opcaodefinida'){ $resultado = $SQL->Query("INSERT INTO ptunet_imagens (imagem,topicoid) VALUES('$nome_foto','$this->topico_id')"); } //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_jpg($this->arquivo['tmp_name'][$i], $xg, $yg, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_jpg($this->arquivo['tmp_name'][$i], $xp, $yp, $diretorio_p.$nome_foto); } if ($aux_tipo_imagem == "image/gif") { $nome_foto = "".$gera_nome.".gif"; if ($this->opcao_envio == 'opcaodefinida'){ $resultado = $SQL->Query("INSERT INTO tabela_imagens (imagem,topicoid) VALUES('$nome_foto','$this->topico_id')"); } //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_gif($this->arquivo['tmp_name'][$i], $xg, $yg, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_gif($this->arquivo['tmp_name'][$i], $xp, $yp, $diretorio_p.$nome_foto); } if ($aux_tipo_imagem == "image/png") { $nome_foto = "".$gera_nome.".png"; if ($this->opcao_envio == 'opcaodefinida'){ $resultado = $SQL->Query("INSERT INTO tabela_imagens (imagem,topicoid) VALUES('$nome_foto','$this->topico_id')"); } //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_png($this->arquivo['tmp_name'][$i], $xg, $yg, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_png($this->arquivo['tmp_name'][$i], $xp, $yp, $diretorio_p.$nome_foto); } } } } ?> Funcoes.php: <?php //######################## Função para imagem JPG ########################### function reduz_imagem_jpg($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // Se a imagem original for menor que o tamanho configurado, matenho as dimensões originais if ($original_x > $max_x){ // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); }else{ $tamanho_x = $original_x; $tamanho_y = $original_y; } $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100); } //######################## Função para imagem GIF ########################### function reduz_imagem_gif($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // Se a imagem original for menor que o tamanho configurado, matenho as dimensões originais if ($original_x > $max_x){ // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); }else{ $tamanho_x = $original_x; $tamanho_y = $original_y; } $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromgif($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagegif($image_p, $nome_foto, 50); } //######################## Função para imagem PNG ########################### function reduz_imagem_png($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // Se a imagem original for menor que o tamanho configurado, matenho as dimensões originais if ($original_x > $max_x){ // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); }else{ $tamanho_x = $original_x; $tamanho_y = $original_y; } $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); imagealphablending($image_p, false); imagesavealpha($image_p,true); $image = imagecreatefrompng($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagepng($image_p, $nome_foto, 9); } ?> Usando: Form <? for ($i=0; $i < 3 - $contador_img; $i++){?> <label><? echo $i + 1; ?> - Imagem:</label><input name="arquivo[]" type="file" /><br /> <?}?> No arquivo que vai receber o formulário: // Loop para caso o cliente não preencha os campos, ele não chamar a class e gerar vários erros for ($i=0; $i <3; $i++){ if (!empty($_FILES['arquivo']['name'][$i])){ $verdade++; } } if ($verdade >= '1'){ define("topico_id", id de registro que quer relacionar); define("opcao_envio","valor opcao envio"); define("diretorio","imagens"); require_once("./include/class.upload.php"); $upload = new Upload(); // Dimensões tumb e grande $upload->Envia_Arquivo(120,100,320,300); } Se alguém souber melhorar mais ainda ou reduzir códigos, por favor postem e contribuam. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 13, 2008 as 3 ultimas funções "reduz_imagem_XX" são idênticas.. poderia ser uma só para identificar o tipo do arquivo use getimagesize() http://php.net/getimagesize Compartilhar este post Link para o post Compartilhar em outros sites
Alan Douglas 0 Denunciar post Postado Dezembro 18, 2008 Fabyo disse: Fiz umas pequenas modificações, agora ele funciona com multiplos ulploads, deixei com 3, mas você pode mudar e colocar mais ou menos mudem a vontade, pois eu so fiz umas pequenas modificações rapidas index.php <?php if(!(file_exists("class_upload.php"))){ exit("Classe class_upload.php nao encontrada"); } else { require_once "class_upload.php"; } if($_SERVER["REQUEST_METHOD"] == "POST"){ $upload = new Upload(); $upload->Enviar_Fotos(); exit; } ?> <html> <head> <title>Upload</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="arquivo[]"><br /> <input type="file" name="arquivo[]"><br /> <input type="file" name="arquivo[]"> <input type="submit" name="Submit" value="Enviar"> </form> </body> </html> funcoes.php <?php /*Fabyo Guimaraes de Oliveira */ function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100); } ?> class_upload.php <?php set_time_limit(0); if(!(file_exists("funcoes.php"))){ exit("funcoes.php nao encontrada"); } else { require_once "funcoes.php"; } class Upload { var $arquivo = ""; var $erro = array ( "0" => "upload execultado com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo" ); function Enviar_Fotos() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; for($i = 0; $i < 3; $i++){ $name = $this->arquivo['name'][$i]; $type = $this->arquivo['type'][$i]; $tmp_name = $this->arquivo['tmp_name'][$i]; $error = $this->arquivo['error'][$i]; $size = $this->arquivo['size'][$i]; if(is_uploaded_file($tmp_name)) { $this->salvar_fotos($tmp_name, $error); } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$error]."</span><br />"; } } } function salvar_fotos($tmp_name, $error) { $diretorio = "fotos/"; if(!file_exists($diretorio)){ if(!(mkdir($diretorio))) die("Nao foi possivel criar a pasta fotos"); } $get = getimagesize($tmp_name); if($get["mime"] != "image/jpeg"){ die("<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo nao é uma imagem valida</span>"); } $nome_foto = "imagem_".microtime().".jpg"; $nome_thumb = "thumb_".microtime().".jpg"; if (!(is_writable($diretorio))) { die('O diretorio fotos não possui permissão de escrita'); } //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($tmp_name, 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($tmp_name, 120, 90, $diretorio.$nome_thumb); echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$error]."</span><br />"; } } ?> Consegui tudo certinho, meu problema era justamente esse de conseguir fazer o upload de mais de uma foto. PORÉM, surgiu mais um problema. Como inserir o endereço da foto no BD? tenho 3 campos: foto1, foto2 e foto3. Eu consegui inserir quando era apenas uma foto, mas quando foram 3 fotos não consegui mais. Eu melhorei para as minhas necessidades esse código e também usei o do Raziel Nomack, que usa apenas 1 campo no BD para inserir as fotos, e coloca a thumbs em pasta separada. Mas na hora de inserir as fotos no BD não estou conseguindo, alguém me da um help? <?php set_time_limit(0); if(!(file_exists("funcoes.php"))){ exit("funcoes.php nao encontrada"); } else { require_once "funcoes.php"; } class Upload { var $arquivo = ""; var $erro = array ( "0" => "upload executado com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo" ); function Enviar_Fotos() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; for($i = 0; $i < 3; $i++){ $name = $this->arquivo['name'][$i]; $type = $this->arquivo['type'][$i]; $tmp_name = $this->arquivo['tmp_name'][$i]; $error = $this->arquivo['error'][$i]; $size = $this->arquivo['size'][$i]; if(is_uploaded_file($tmp_name)) { $this->salvar_fotos($tmp_name, $error); } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$error]."</span><br />"; } } } function salvar_fotos($tmp_name, $error) { $diretorio = "fotos/"; if(!file_exists($diretorio)){ if(!(mkdir($diretorio))) die("Nao foi possivel criar a pasta fotos"); } $get = getimagesize($tmp_name); if($get["mime"] != "image/jpeg"){ die("<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo nao é uma imagem valida</span>"); } $nome_foto = "imagem_".microtime().".jpg"; $nome_thumb = "thumb_".microtime().".jpg"; if (!(is_writable($diretorio))) { die('O diretorio fotos não possui permissão de escrita'); } //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($tmp_name, 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($tmp_name, 120, 90, $diretorio.$nome_thumb); echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$error]."</span><br />"; // ----------------- Gravar no Banco de Dados ------------------- // $conexao = mysql_connect("localhost","root",""); mysql_select_db("upload9"); // ----------------- AQUI EU ME PERCO ------------------- // $sql = "insert INTO dados (foto1, foto2, foto3) Values ('$nome_foto')"; $query = mysql_query($sql); mysql_close($conexao); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoInfo 1 Denunciar post Postado Dezembro 18, 2008 Alan Douglas disse: // ----------------- AQUI EU ME PERCO ------------------- // $sql = "insert INTO dados (foto1, foto2, foto3) Values ('$nome_foto')"; $query = mysql_query($sql); mysql_close($conexao); } } ?> Como você, está gravando em cada campo, acho que você pode fazer um for, está retornando o nome das 3 fotos geradas? tenta assim: $fotos_gravar = array(); $fotos_gravar[] = $nome_foto; $salvar = join(",",$fotos_gravar); $sql = "insert INTO dados (foto1, foto2, foto3) Values ('$salvar')"; tenta ai... eu uso pra gravar alguns dados e dá certo.. se ele conseguir montar uma array co o nome das imagens vai dar certo. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 18, 2008 pessoal nao precisa quotar o post todo senao o topico fica gigante sem necessidade podem responder e so quotem o que for necessario Compartilhar este post Link para o post Compartilhar em outros sites
Alan Douglas 0 Denunciar post Postado Dezembro 22, 2008 Mário, desculpe.. sou "novo" por aqui e aos poucos vou pegando as manhas. THIAGO Tentei desse jeito mas não funcionou também! Outras maneiras que eu estava tentando era assim: $sql = "insert INTO dados (foto1, foto2, foto3) Values ('{$_FILES['nome_foto']['nome_thumb'][$i]}')"; Mas não fui feliz, até fui em um momento mas acabei não salvando e perdi o código. Mas nele eu só conseguia gravar a primeira foto, as demais não iam para o BD, ou seja, não resolvia muito meu problema. =/ Compartilhar este post Link para o post Compartilhar em outros sites
Débora B 0 Denunciar post Postado Dezembro 29, 2008 'Alan Douglas' disse: Mário, desculpe.. sou "novo" por aqui e aos poucos vou pegando as manhas. THIAGO Tentei desse jeito mas não funcionou também! Outras maneiras que eu estava tentando era assim: $sql = "insert INTO dados (foto1, foto2, foto3) Values ('{$_FILES['nome_foto']['nome_thumb'][$i]}')"; Mas não fui feliz, até fui em um momento mas acabei não salvando e perdi o código. Mas nele eu só conseguia gravar a primeira foto, as demais não iam para o BD, ou seja, não resolvia muito meu problema. =/ Olá, sou iniciante e nova por aqui. Como estão passando ? Gostaria de parabenizar a nova versão que o Fábyo fez deste script, muito bom!!! Estou com o mesmo problema do colega Alan Douglas. Como gravo no Banco de dados os nomes das fotos e os Thumbs gerados por este script ?? bjs pra vcs. http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif Compartilhar este post Link para o post Compartilhar em outros sites
Débora B 0 Denunciar post Postado Dezembro 31, 2008 Poxa, alguém pode ajudar ? Feliz 2009 !!! Compartilhar este post Link para o post Compartilhar em outros sites
Débora B 0 Denunciar post Postado Dezembro 31, 2008 João fiz desta forma. ?> Compartilhar este post Link para o post Compartilhar em outros sites
Débora B 0 Denunciar post Postado Janeiro 2, 2009 Se não for pedir muito, alguém podia resolver esse "pepino" Grata Compartilhar este post Link para o post Compartilhar em outros sites