Carlos Rocha Postado Maio 13, 2010 Denunciar Share Postado Maio 13, 2010 (editado) Ola pessoal,Estou começando a me preparar para fazer uploads de varias imagens com patch no Banco mas estou me travando na verificação da extensão.O que eu queria era ver se na matriz (array) do campo file que envia "n" fotos ( ou imagens), há extensões validas.Ou seja, Se o aqruivo que enviei tem extensão valida.No (pequeno) script que estou fazendo poara teste, só passa a extensão gif. Png, jpg e jpeg não passam.Será que estou fazendo errado?<form action="tt.php" method="post" enctype="multipart/form-data"> <b>Envio das fotos</b><br /> <input type="file" name="fotos[]"><br /> <input type="submit" value="OK"/> </form> <? $Fotos = $_FILES['fotos']; //$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE; for($i = 0; $i < sizeof($Fotos['name']); $i++) { $Nome = $Fotos['name'][$i]; $Tamanho = $Fotos['size'][$i]; $Tipo = $Fotos['type'][$i]; $Tmpname = $Fotos['tmp_name'][$i]; print $Nome."<br>"; print $Tamanho."<br>"; print $Tipo."<br>"; print $Tmpname."<p>"; print preg_match('/^image\/(gif|jpeg|jpg|png)$/', $Tipo)."<br>"; preg_match('/^image\/(gif|jpeg|jpg|png)$/', $Tipo, $Ext)."<br>"; print $Ext[1]."<br>"; if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$",$Ext[1])) { print "Ok"; } else { print "iiiiiii"; } } //FIM DO FOR ?> Editado Maio 13, 2010 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Maio 13, 2010 Autor Denunciar Share Postado Maio 13, 2010 Bom, descobri parte do erro.Porem agora preciso usar a função mas o resultado é a criação de um arquivo sem extensão e nem pasta é.O que será que esta errado:<form action="tt.php" method="post" enctype="multipart/form-data"> <b>Envio das fotos</b><br /> <input type="file" name="fotos[]"><br /> <input name="MAX_FILE_SIZE" type="hidden" value="1"> <input type="submit" value="OK"/> </form> <? $dir="img/"; $Fotos = $_FILES['fotos']; //$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE; for($i = 0; $i < sizeof($Fotos['name']); $i++){ $Nome = $Fotos['name'][$i]; $Tamanho = $Fotos['size'][$i]; $Tipo = $Fotos['type'][$i]; $Tmpname = $Fotos['tmp_name'][$i]; /////////////////////// print $Nome."<br>"; print $Tamanho."<br>"; print $Tipo."<br>"; print $Tmpname."<p>"; ////////////////////////// if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $Fotos['type'])) { echo "OPA"."<br>"; echo $Fotos['type'][$i]."<br>"; } else { echo "IIIIIIIIII"."<br>"; echo $Fotos['type'][$i]."<br>"; } ////////////////////////// $Caminho = $dir . $Nome; print $Caminho."<br>"; if(move_uploaded_file($Tmpname, $Caminho)) { echo 'Foto #' . ($i+1) . ' enviada.<br/>'; // Faz contagem de enviada com sucesso $Conta++; } else // Erro no envio { // $i+1 porque $i começa em zero echo 'Não foi possível enviar a foto #' . ($i+1) . '<br/>'; } } //FIM DO FOR ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Maio 13, 2010 Autor Denunciar Share Postado Maio 13, 2010 Nova situação agora.Mesmo usando no script abaixo as funções Copy ou move_uploadedfiles, tanto faz, o resultado é o mesmo.Só da certo se eu colocar apenas o nome da imagem.Caso eu coloque o nome do diretório que quero colocar a imagem ai não faz o upload.Segue:<form action="tt.php" method="post" enctype="multipart/form-data"> <b>Envio das fotos</b><br /> <input type="file" name="fotos[]"><br /> <input type="submit" value="OK"/> </form> <? $dir="img/"; $Fotos = $_FILES['fotos']; //$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE; for($i = 0; $i < sizeof($Fotos['name']); $i++){ $Nome = $Fotos['name'][$i]; $Tamanho = $Fotos['size'][$i]; $Tipo = $Fotos['type'][$i]; $Tmpname = $Fotos['tmp_name'][$i]; ////////////////////////// if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $Fotos['type'])) { if(copy($Tmpname, $Nome)) // aqui, se eu colocar a variavel $Caminho o upload não vai. //if(move_uploaded_file($Tmpname, $Nome)) { echo 'Foto #' . ($i+1) . ' enviada.<br/>'; // Faz contagem de enviada com sucesso $Conta++; } else // Erro no envio { echo 'Não foi possível enviar a foto #' . ($i+1) . '<br/>'; } } else { echo "Erro"; } } //FIM DO FOR ?> image/gif img/Fim de Ano (6).gif img/ gif Fim de Ano (6).gif C:\Windows\Temp\phpD12B.tmp Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Maio 14, 2010 Autor Denunciar Share Postado Maio 14, 2010 Bom pesoal.Consegui resolvar parte do problema.Agora, gostaria de pedir voces que ohasse por favor o script abaixo onde, na hora que chega o momento de gera uma miniaturta da imagem enviada por upload, ai dá o seguinte erro :Warning: imagecreatefromjpeg(/tmp/phpfcthJD) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/dinamica/public_html/teste_upload/Multiplos_Uploads.php on line 51 Esis o código <b>Envio das fotos</b><br /> <form action="Multiplos_Uploads.php" method="post" enctype="multipart/form-data"> <input type="file" name="fotos[]"><br /> <input type="file" name="fotos[]"><br /> <input type="file" name="fotos[]"><br /> <input type="submit" value="OK"/> </form> <? $dir="teste_upload/normal/"; $dir_mini="teste_upload/mini/"; $Fotos = $_FILES['fotos']; //$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE; for($i = 0; $i < sizeof($Fotos['name']); $i++){ $Nome = $Fotos['name'][$i]; $Tamanho = $Fotos['size'][$i]; $Tipo = $Fotos['type'][$i]; $Tmpname = $Fotos['tmp_name'][$i]; $Caminho = $dir . $Nome; $Caminho_mini = $dir_mini . $Nome; if (!$Nome) { echo 'Você não enviou nada na posição' . ($i+1) . '<br/>'; } else { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $Tipo)) { echo 'O arquivo ' . ($i+1) . ' não é um arquivo válido.<br/>'; // Faz contagem de enviada com sucesso $Conta++; } else { if(move_uploaded_file($Tmpname, $Caminho)) { echo 'Foto ' . ($i+1) . ' enviada.<br/>'; // Faz contagem de enviada com sucesso $Conta++; ///cria a miniatura e faz io move_uploaded_file //IMAGEM A SER ABERTA $imagem = $Tmpname; //NOME DO ARQUIVO DA MINIATURA Igual o nome da original $imagem_gerada = $Nome; //CRIA UMA NOVA IMAGEM $imagem_orig = ImageCreateFromJPEG($imagem); //LARGURA $pontoX = ImagesX($imagem_orig); //ALTURA $pontoY = ImagesY($imagem_orig); //DEFINE OS PARÂMETROS DA MINIATURA $largura = 150; $altura = ($pontoY * $largura) / $pontoX; //CRIA O THUMBNAIL $imagem_fin = ImageCreateTrueColor($largura, $altura); //COPIA A IMAGEM ORIGINAL PARA DENTRO ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY); //SALVA A IMAGEM ImageJPEG($imagem_fin, "$dir_mini/".$imagem_gerada,100); //LIBERA A MEMÓRIA ImageDestroy($imagem_orig); ImageDestroy($imagem_fin); } else // Erro no envio { echo 'Não foi possível enviar a foto' . ($i+1) . '<br/>'; } } } } //FIM DO FOR ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rocha
Ola pessoal,
Estou começando a me preparar para fazer uploads de varias imagens com patch no Banco mas estou me travando na verificação da extensão.
O que eu queria era ver se na matriz (array) do campo file que envia "n" fotos ( ou imagens), há extensões validas.
Ou seja, Se o aqruivo que enviei tem extensão valida.
No (pequeno) script que estou fazendo poara teste, só passa a extensão gif. Png, jpg e jpeg não passam.
Será que estou fazendo errado?
Editado por Carlos RochaLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.