Kamykaze 0 Denunciar post Postado Julho 7, 2008 Olá, gostaria de saber uma forma de restringir tipos de arquivos na hora do upload. Por ex: só aceita jpg, gif, pdf, xls... como posso fazer isso ? ou se puderem mostrar um lugar onde posso aprender seria bom...hehehe, des de ja agradeço... t+ Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Julho 7, 2008 Use algo como esse código: $file = $_FILES['arquivo'] $allow = array('jpg', 'png', 'bmp', 'gif', 'jpeg', 'pjpeg'); $ext = substr($file['type'], strrpos($file['type'], '/') + 1); if (array_search($ext, $allow) === false) { // <erro> } else { // <ok> } Onde o arquivo em $file = $_FILES['arquivo]; é o name do <input> de upload. Compartilhar este post Link para o post Compartilhar em outros sites
donny_ 0 Denunciar post Postado Julho 9, 2008 ~TiuTalk~, baseado em seu codigo, nao consegui fazer funcionar, entao pelejando aqui, cheguei a esse: <?php $anexo = $_FILES['foto1']; $invalidos = array('.jpg', '.png'); $ext = substr($anexo['name'], -4); //echo $ext; if(array_search($ext, $invalidos)) { echo "formato invalido"; } else { echo "formato válido"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Julho 9, 2008 Pessoal, a melhor forma de verificar a extensão de um arquivo, é com o próprio atributo do files, assim: <form name="img" action="" method="POST" enctype="multipart/form-data"> <input type="file" name="foto"><input type="submit"> </form> <?php $img=$_FILES['foto']; $arquivos=array('image/jpeg'); if($img['type'] != $arquivos[0]) echo 'Não permitido'; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 10, 2008 Eu faria assim: Criaria um vetor com as extensões permitidas. Note que usarei o mime-type, uma vez que é muito simples mudr a extensão de um arquivo: $permitidos = array( "jpg" => "imge/jpeg", "txt" => "text/plain" ); Depois pegue o mime-type do arquivo e veja se ele consta no array de tipos permitidos. Use in_array(): http;//www.php.net/in_array Veja que, se txt fosse permitido, a primeira solução não funcionaria, pois o mime do txt é text/plain (depois da barra não há txt). http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif []s Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Julho 10, 2008 Bom também, :) Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Julho 10, 2008 Eu faria assim: Criaria um vetor com as extensões permitidas. Note que usarei o mime-type, uma vez que é muito simples mudr a extensão de um arquivo: $permitidos = array( "jpg" => "imge/jpeg", "txt" => "text/plain" ); Depois pegue o mime-type do arquivo e veja se ele consta no array de tipos permitidos. Use in_array(): http;//www.php.net/in_array Veja que, se txt fosse permitido, a primeira solução não funcionaria, pois o mime do txt é text/plain (depois da barra não há txt). http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif []s Beraldo Momento nenhum eu disse que no array tinha que vir as extensões permitidas =P Mas tenho que assumir que o seu método é mais... 'legal' xD http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Julho 10, 2008 Momento nenhum eu disse que no array tinha que vir as extensões permitidas =P Mas tenho que assumir que o seu método é mais... 'legal' xD Prefiro o meu :D Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 10, 2008 Momento nenhum eu disse que no array tinha que vir as extensões permitidas =PÉ que o nome do seu array é allow... :rolleyes: Mas, com certeza, é mais seguro testar o mime-type inteiro, não somente o que vem após a barra. Compartilhar este post Link para o post Compartilhar em outros sites
donny_ 0 Denunciar post Postado Julho 10, 2008 Bom galera, ja que tamo nesse bate papo aqui di extensoes etc.... por mera coincidencia hj tive que fazer um sisteminha, so q é ao contrario, vai enviar pro servidor apenas as extensoes declaradas no array, so q to com uma duvida, eu queria fazer que quando algum campo tiver com extensao invalida, ele nao manda nenhum campo pro servidor, ele so enviara todas as fotos ou nenhuma, do jeito que ta aqui, ele so cancela a que ta errada, e manda as outras pro servidor, isso seria bem ruim caso o usuario fizesse alguma imagem errada, mandaria varias vezes pro servidor enxendo das mesmas fotos... segue abaixo o codigo: <?php $dir = 'C:/tempo/' . DIRECTORY_SEPARATOR; $datahora = date("Ymd_His"); $arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; for ($i = 0; $i < count($arquivo['name']); $i++) { //Verificando se o arquivo contém a extensão declarada em $invalidos: $validos = array('.png', '.doc', '.pdf'); $checa = substr($arquivo['name'][$i], -4); //Se os arquivos estiverem corretos, faz o envio: if (in_array($checa, $validos)) { if (move_uploaded_file($arquivo['tmp_name'][$i], $dir . $datahora . $arquivo['name'][$i])) { echo "<p><strong>Enviado:</strong> " . $datahora . $arquivo['name'][$i] . " | " . round($arquivo['size'][$i] / 1024, 2) . " kB | " . $arquivo['type'][$i] . "</p>"; } } //Se estiverem errados, faz o cancelamento do envio: else { echo "<p><strong>Não enviado: </strong> " . $arquivo['name'][$i] . " | " . round($arquivo['size'][$i] / 1024, 2) . " kB | " . $arquivo['type'][$i] . "</p>"; } } ?> lembrando que no meu form, os campos estao em modo de array tb, name="arquivo[]"... se alguem puder me ajudar nessa parada ai, fico muito agradecido, obrigado a todos... Compartilhar este post Link para o post Compartilhar em outros sites
donny_ 0 Denunciar post Postado Julho 13, 2008 Ninguém sabe me ajudar a resolver isso? vlwww..... Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Julho 14, 2008 dentro do laço é só você verificar quais campos foram "preenchidos" ou não.. for() { if(!empty($arquivo["name"][$i])) { ... aqui o código do upload } } assim só envia os campos preenchidos... Compartilhar este post Link para o post Compartilhar em outros sites
donny_ 0 Denunciar post Postado Julho 14, 2008 entao cassiano, vlw pela ajuda, mais o problema é, gostaria de verificar a extensao dos arquivos colocados nos campos, vamos supor, tenho 6 campos se o usuario anexar 3 arquivos vou verificar as extensoes dos 3 arquivos, se tiver valido, manda os 3, agora se um dos 3 estiver invalido, nao manda nenhum dos 3, tendeu??? vlw pela ajuda, muito obrigado... Compartilhar este post Link para o post Compartilhar em outros sites