Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ae Galera Forumaniaca,
Olha eu aqui novamente com o script de upload multiplo. Seguinte este está fazendo o envio de mais de um arquivo :boxing: , dai eu acrescentei as validações de tamanho de imagem(altura, largura), se o arquivo já existe, tamanho do arquivo em kbytes e tipo de arquivo a enviar.
Bom ao testar eu verifiquei algumas falhas na logica, e é ai onde não estou conseguindo corrigir, e confesso que tentei e muito. Seguinte se eu envio no primeiro "campo do input" uma imagem que está ok quanto as validações e no segundo "campo do input" uma imagens que não está ok com as validações, a primeira é enviada, e a segunda eu recebo as msg de erro, mas, a imagem é enviada mesmo assim, agora se o envio é o inverso, tipo, no primeiro "campo do input" eu coloco uma imagem que não está ok com as validações esta não é enviada e recebo as msg de erro e no segundo "campo do input" uma que está ok com as validações ela é enviada. Resumindo, preciso que o script fique de acordo com este processo inverso, corrigir a logica das validações. Segue abaixo os scripts, para fazer os testes:
UPLOAD.PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[http://www.w3.org/TR/html4/loose.dtd">http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Upload</title></head><body><table align="center" border="0"> <tr> <td><form name="enviar" action="enviar.inc.php" method="post" enctype="multipart/form-data"> <table cellpadding="5" cellspacing="1" border="0" align="center"> <tr> <td>Enviar imagens</td> </tr> <? for($x=0; $x<=4; $x++){ ?> <tr> <td><input type="file" name="Imagens[]"></td> </tr> <? } ?> <tr> <td><input type="submit" name="botao" value="Enviar"></td> </tr> </table> </form></td> </tr></table></body></html>
ENVIAR.INC.PHP
<?include "funcoes.php";$ok = 0;$erro = 0; foreach($_FILES['Imagens']['error'] as $chave => $error){ if($_FILES['Imagens']['name'] <> ""){ if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["Imagens"]["tmp_name"][$chave]; $name = $_FILES["Imagens"]["name"][$chave]; $tipo = $_FILES["Imagens"]["type"][$chave]; $size = $_FILES["Imagens"]["type"][$chave]; // Para verificar as dimenses da imagem $tamanhos = getimagesize($_FILES["Imagens"]["tmp_name"][$chave]); $config = array(); // Largura Mxima, em pixels $config["largura"] = 500; // Altura Mxima, em pixels $config["altura"] = 600; // Tamanho máximo do arquivo em Kbytes. $bytes = 1024; $kbytes = 10; //Defina aqui o tamanho necessário em Kbytes. $maximo = $bytes / $kbytes; $nome_foto = "zoom_".$name; $nome_thumb = "thumb_".$name; //Caso diretório não exista ele será criado para o envio. $url = "./fotos/"; if(!file_exists($url)) { mkdir($url); } // Se possui uma extensão válida if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $tipo)) { alerta("$ok Imagem enviada.\\n$erro Esse arquivo: ".$name." não é uma imagem válida!", "java script:history.go(-1)"); } if (file_exists($url.$nome_foto)) { alerta("$ok Imagem enviada.\\n$erro Arquivo: ".$name." já existe!!", "java script:history.go(-1)"); } // Verifica tamanho do arquivo. if ($size > $maximo) { alerta("$ok Imagem enviada.\\n$erro Erro! O arquivo: ".$name." enviado por você ultrapassa o limite máximo de " . $maximo . " kbytes! Envie outro arquivo","java script:history.go(-1)"); } // Verifica largura if($tamanhos[0] > $config["largura"]) { alerta("$ok Imagem enviada.\\n$erro Largura da imagem: ".$name." não deve ultrapassar " . $config["largura"] . " pixels"); // Verifica altura if($tamanhos[1] > $config["altura"]) { alerta("$ok Imagem enviada.\\n$erro Altura da imagem: ".$name." não deve ultrapassar " . $config["altura"] . " pixels"); echo "<meta http-equiv=\"refresh\" content=\"0;URL=java script:history.go(-1)\">"; } } else $copy = true; if($copy){ $copy = move_uploaded_file($tmp_name, "./fotos/".$nome_foto); $ok ++; $url = "./fotos/"; criathumb($url, $name); } else { $erro ++; } } }}alerta("$ok Imagem enviada.\\n$erro Imagem não pode ser enviada.", "upload.php");?>
FUNÇÕES
<? //Exibe alert do java script. function alerta($texto,$redirect="") { echo "<script language=javascript>"; echo "alert(\" $texto \");"; if ($redirect!="") echo "window.location=\"$redirect\";"; echo "</script>"; }// Script original de 'Spider-man'// [http://forum.wmonline.com.br/index.php?showtopic=113663&hl=thumbnail//](http://forum.wmonline.com.br/index.php?showtopic=113663&hl=thumbnail//) Adaptado para funcionar como uma função.function criathumb($url, $name){ //Caso diretório não exista ele será criado para o envio. $url_mini = "fotos/mini/"; if(!file_exists($url_mini)) { mkdir($url_mini); } // define a imagem a partir da qual será gerada a minuatura $imagem = $url."zoom_".$name; // **** configurações da miniatura ******* $tamanho_fixo = "S"; // S ou N $largura_fixa = 120; // usado somente com tamanho_fixo=S $altura_fixa = 90; // usado somente com tamanho_fixo=S// $percentual = 20; // usado somente com tamanho_fixo=N // ************************************** // monta o nome do arquivo resultante $explode = explode('.', $name); $arquivo_miniatura = $url."/mini/thumb_".$explode[0].".".$explode[1]; // lê a imagem de origem e obtém suas dimensões if($explode[1] == "jpg" || $explode[1] == "jpeg") $img_origem = ImageCreateFromJPEG($imagem); else if($explode[1] == "gif") $img_origem = ImageCreateFromGIF($imagem); else if($explode[1] == "png") $img_origem = ImageCreateFrompng($imagem); $origem_x = ImagesX($img_origem); $origem_y = ImagesY($img_origem); // se não for tamanho fixo, calcula as dimensões da miniatura if($tamanho_fixo=="S") { $x = $largura_fixa; $y = $altura_fixa; } else { $x = intval ($origem_x * $percentual/100); $y = intval ($origem_y * $percentual/100); } // cria a imagem final, que irá conter a miniatura $img_final = ImageCreateTrueColor($x,$y); // copia a imagem original redimensionada para dentro da imagem final ImageCopyResampled($img_final, $img_origem, 0, 0, 0, 0, $x+1, $y+1, $origem_x , $origem_y); // salva o arquivo ImageJPEG($img_final, $arquivo_miniatura); // libera a memória alocada para as duas imagens ImageDestroy($img_origem); ImageDestroy($img_final);}?> Valeu D++ Galera.Carregando comentários...