Mayko 0 Denunciar post Postado Maio 14, 2008 Olá galera! Estou com um script que faz upload de arquivos, segue: if($rev_materia1){ if(!eregi("^application\/(pdf|zip)$", $rev_materia1["type"])){ //Garante a entrada de arquivos ZIP ou PDF pelo mime-type echo "O arquivo [Materia 1] deve ser PDF ou ZIP"; exit; } else {// Verificação de dados OK, executa o upload $ext_file = explode(".",$rev_materia1["name"]); $ext_cont = (count($ext_file)-1); $extensao = strtolower($ext_file[$ext_cont]); $file_name = md5(uniqid(time())).".".$extensao; // Gera um nome único para a imagem $file_dir = "materias_1/" . $file_name; // Caminho de onde a imagem ficará move_uploaded_file($rev_materia1["tmp_name"], $file_dir); // Faz o upload da imagem echo "Matéria 1 enviada com sucesso<br>"; } } Funciona corretamente, porém só para arquivos do tipo PDF. Como podem ver a mime-type para zip também está correto. Não faço idéia de onde o erro possa estar, aguém pode me ajudar? []'s HugS Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Sabdini 0 Denunciar post Postado Maio 14, 2008 mas qual é o erro? Compartilhar este post Link para o post Compartilhar em outros sites
Mayko 0 Denunciar post Postado Maio 15, 2008 Aí está o problema... Ele não mostra erro nenhum. Simplesmente não capia o arquivo pro diretório que mandei ele copiar. Isso só para arquivos zip... pra pdf funciona normalmente. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Maio 16, 2008 Deveria imprimir algo, se não está imprimindo, é porque algo está matando o script. Habilite a exibição de erros pra que a mensagem de erro apareça. Quando se está desenvolvendo, é necessário trabalhar com a exibição de erros. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 16, 2008 Dessa maneira ai eu estou vendo apenas o ECHO dizendo que foi enviado com sucesso, você deve validar o envia para poder aparecer a mensagem, se não, mesmo sem enviar ele vai ficar aparecendo enviado e tal... coloque um IF, se enviado ele imprime enviado, se não ele imprime falha e exibi os erros... você recebe que valor nessa variável $rev_materia1 ? de algum link ? Compartilhar este post Link para o post Compartilhar em outros sites
Mayko 0 Denunciar post Postado Maio 16, 2008 Dessa maneira ai eu estou vendo apenas o ECHO dizendo que foi enviado com sucesso, você deve validar o envia para poder aparecer a mensagem, se não, mesmo sem enviar ele vai ficar aparecendo enviado e tal... coloque um IF, se enviado ele imprime enviado, se não ele imprime falha e exibi os erros... você recebe que valor nessa variável $rev_materia1 ? de algum link ? Sim, estou recebendo um arquivo de um campo file de um form. Essa versão estava um pouco precária, trabalhei numa nova desde ontem: function TrataArquivo($arquivo, $msg){ if(!eregi("^application\/(zip|pdf)$", $arquivo["type"])){ //Garante a entrada de arquivos ZIP ou PDF pelo mime-type echo "<p align=\"center\">O arquivo [".$arquivo["name"]."], ".$msg." deve ser PDF ou ZIP</p>"; return null; } else {// Verificação de dados OK, gera o nome $ext_file = explode(".",$arquivo["name"]); $ext_cont = (count($ext_file)-1); $extensao = strtolower($ext_file[$ext_cont]); $name = md5(uniqid(time())).".".$extensao; // Gera um nome único para o arquivo return $name; } } Ela recebe o arquivo como parametro, que foi recebido de um formulário comum html, de um campo file. $msg é apenas uma mensagem de erro que eu gostaria de exibir, já que estou usando essa função para diversos arquivos A idéia é verificar se o tipo do arquivo eh zip ou pdf para soh assim podermos efetuar o upload. Nesse ponto o script só aceita pdf (não me pergunte porque cargas dágua isso está acontecendo). Coloquei um echo dentro do bloco else, ele essa msg soh aparecia quando submetida arquivos do tipo pdf. Quando submetia um zip, essa msg dentro do bloco else não aparecia, e a mensagem O arquivo [".$arquivo["name"]."], ".$msg." deve ser PDF ou ZIP também não. A exibição de erros está habilidade e as permissões de mime do tipo application/ip e /pdf também estão habilitadas no arquivo de configuração d servidor local. Não sei mais o que fazer, qualquer ajuda é bem vinda!! Desde já, grato! Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 16, 2008 Se você recebe de um formulário, eu não estou vendo ai nenhuma VAR do tipo $_FILES[]; para receber os dados... faça um teste: print_r($_FILES);verifique no form também o atributo multipart/form-data Compartilhar este post Link para o post Compartilhar em outros sites
Mayko 0 Denunciar post Postado Maio 16, 2008 Alaerte, fiz umas modificações e acho que você está confundindo o codigo antigo com o novo, vou colar aqui o script completo. <?php $pdf = array(); $file_name = array(); $rev_numero = isset($_POST["rev_numero"]) ? $_POST["rev_numero"] : FALSE; $rev_ano = isset($_POST["rev_ano"]) ? $_POST["rev_ano"] : FALSE; $rev_mes = isset($_POST["mes"]) ? $_POST["mes"] : FALSE; $rev_materia1 = isset($_FILES["rev_materia1"]) ? $_FILES["rev_materia1"] : FALSE; //Pdf $rev_materia2 = isset($_FILES["rev_materia2"]) ? $_FILES["rev_materia2"] : FALSE; //Pdf $rev_editorial = isset($_FILES["rev_editorial"]) ? $_FILES["rev_editorial"] : FALSE; //Pdf $rev_agenda = isset($_FILES["rev_agenda"]) ? $_FILES["rev_agenda"] : FALSE; //Pdf $rev_eventos = isset($_FILES["rev_eventos"]) ? $_FILES["rev_eventos"] : FALSE; //Pdf $rev_curtas = isset($_FILES["rev_curtas"]) ? $_FILES["rev_curtas"] : FALSE; //Pdf $rev_opiniao = isset($_FILES["rev_opiniao"]) ? $_FILES["rev_opiniao"] : FALSE; //Pdf $rev_imagem = isset($_FILES["rev_imagem"]) ? $_FILES["rev_imagem"] : FALSE; //Pdf /*=============================================================================== ======= UPLOAD DOS ARQUIVOS ================================================================================ =======*/ //Armazena os nomes dos arquivos que serão upados na array $file_name() if($rev_materia1) $file_name[0] = TrataArquivo($rev_materia1, $mat1="Submetido no campo Materia 1"); if($rev_materia2) $file_name[1] = TrataArquivo($rev_materia2, $mat2="Submetido no campo Materia 2"); if($rev_editorial) $file_name[2] = TrataArquivo($rev_editorial, $edt="Submetido no campo Editorial"); if($rev_agenda) $file_name[3] = TrataArquivo($rev_agenda, $agd="Submetido no campo Agenda"); if($rev_eventos) $file_name[4] = TrataArquivo($rev_eventos, $evt="Submetido no campo Eventos"); if($rev_curtas) $file_name[5] = TrataArquivo($rev_curtas, $crt="Submetido no campo Curtas"); if($rev_opiniao) $file_name[6] = TrataArquivo($rev_opiniao, $opn="Submetido no campo Opinião"); if($rev_imagem) $file_name[7] = TrataImagem($rev_imagem, $img="Submetido no campo de Imagem"); //Atribui TRUE para $flag_erro caso haja algum arquivo que nao seja ZIP ou PDF if(sizeof($file_name))foreach($file_name as $k)if($k == null){$flag_erro = true;break;} //Caso o flag seja FALSE, faz o upload dos arquivos (já temos garantia de todos arquivos serem do tipo especificado) if(!$flag_erro){ //Para o arquivo referente à Matéria 1 $pdf[0] = $file_dir = "materias_1/" . $file_name[0]; move_uploaded_file($rev_materia1["tmp_name"], $file_dir); echo "<p align = \"center\">Matéria 1 enviada com sucesso</p>"; //Para o arquivo referente à Matéria 2 $pdf[1] = $file_dir = "materias_2/" . $file_name[1]; move_uploaded_file($rev_materia2["tmp_name"], $file_dir); echo "<p align = \"center\">Matéria 2 enviada com sucesso<br>"; //Para o arquivo referente ao Editorial $pdf[2] = $file_dir = "editorial/" . $file_name[2]; move_uploaded_file($rev_editorial["tmp_name"], $file_dir); echo "<p align = \"center\">Editorial enviada com sucesso<br>"; //Para o arquivo referente à Agenda $pdf[3] = $file_dir = "agenda/" . $file_name[3]; move_uploaded_file($rev_agenda["tmp_name"], $file_dir); echo "<p align = \"center\">Agenda enviada com sucesso<br>"; //Para o arquivo referente ao Evento $pdf[4] = $file_dir = "eventos/" . $file_name[4]; move_uploaded_file($rev_eventos["tmp_name"], $file_dir); echo "<p align = \"center\">Eventos enviada com sucesso<br>"; //Para o arquivo referente à Curtas $pdf[5] = $file_dir = "curtas/" . $file_name[5]; move_uploaded_file($rev_curtas["tmp_name"], $file_dir); echo "<p align = \"center\">Curtas enviada com sucesso<br>"; //Para o arquivo referente à Opinião $pdf[6] = $file_dir = "opiniao/" . $file_name[6]; move_uploaded_file($rev_opiniao["tmp_name"], $file_dir); echo "<p align = \"center\">Opiniao enviada com sucesso<br>"; //Para o arquivo referente à imagem $pdf[7] = $file_dir = "imgrevista/" . $file_name[7]; move_uploaded_file($rev_imagem["tmp_name"], $file_dir); echo "<p align = \"center\">Imagem enviada com sucesso<br>"; //================================================================================ ======= // BANCO DE DADOS //================================================================================ ======= $data = date("d/m/Y"); $hora = date("H:i:s"); $SQL = "INSERT INTO revistas (cad_hora, cad_data, numero, ano, mes, pdf_materia1, pdf_materia2, pdf_editorial, pdf_agenda, pdf_eventos, pdf_curtas, pdf_opiniao, pdf_imagem) VALUES ('$hora','$data','$rev_numero','$rev_ano', '$rev_mes', '$pdf[0]', '$pdf[1]', '$pdf[2]', '$pdf[3]', '$pdf[4]', '$pdf[5]', '$pdf[6]', '$pdf[7]')"; //Executa a query $QUERY = @mysql_query($SQL); //Trata sucesso ou erro if(!$QUERY){ echo "<h2 align = \"center\">Houve um erro ao cadastrar a revista, por favor tente novamente. Se o erro persistir, contate o webmaster.</h2>"; echo "<p align=\"center\"><a href=\"cad_revistas.php\">Voltar</a>"; exit; } else{ echo "<h2 align = \"center\">A revista foi enviada com sucesso.</h2>"; echo "<p align=\"center\"><a href=\"cad_revistas.php\">Voltar</a>"; exit; } } //================================================================================ ======= // FUNÇÕES //================================================================================ ======= /*Função TrataArquivo() Recebe o arquivo a ser tratado como parametro Verifica seu tipo pelo mime-type Gera um nome unico para o arquivo a partir da função time Retona o nome do arquivo se o tipo for verificado corretamente ou null caso o arquivo seja de tipo diferente */ function TrataArquivo($arquivo, $msg){ if(!eregi("^application\/(zip|pdf)$", $arquivo["type"])){ //Garante a entrada de arquivos ZIP ou PDF pelo mime-type echo "<p align=\"center\">O arquivo [".$arquivo["name"]."], ".$msg." deve ser PDF ou ZIP</p>"; return null; } else {// Verificação de dados OK, gera o nome $ext_file = explode(".",$arquivo["name"]); $ext_cont = (count($ext_file)-1); $extensao = strtolower($ext_file[$ext_cont]); $name = md5(uniqid(time())).".".$extensao; // Gera um nome único para o arquivo return $name; } } /*Função TrataImagem() Recebe a imagem a ser tratada como parametro Verifica seu tipo pelo mime-type Gera um nome unico para a imagem a partir da função time Retona o nome da imagem se o tipo for verificado corretamente ou null caso o arquivo seja de tipo diferente */ function TrataImagem($arquivo){ if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])){ echo "<p align=\"center\">Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; echo "<p align=\"center\"><a href=\"cad_revistas.php\">Voltar</a>"; return null; } else {// Verificação de dados OK, gera o nome $ext_file = explode(".",$arquivo["name"]); $ext_cont = (count($ext_file)-1); $extensao = strtolower($ext_file[$ext_cont]); $name = md5(uniqid(time())).".".$extensao; // Gera um nome único para o arquivo return $name; } } ?> É um sistema pra upload de arquivos de uma revista eletronica em que estou trabalhando. PS.: habilitei a opção TRACK ERRORS do php e obtive o seguinte quando submeto arquivos do tipo zip: Warning: POST Content-Length of 17000546 bytes exceeds the limit of 8388608 bytes in Unknown on line 0 O mesmo nao acontece pra pdfs []'s Obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Maio 19, 2008 acho que o arquivo ta excedendo o tamanho permitido! * UPs não são permitidos no fórum heim, cuidado! dá uma lida nas regras depois... Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Maio 19, 2008 ja pensou em usar um if(in_array ? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 19, 2008 Cara o seu script ta ultrapassando o limite do POST veja: Warning: POST Content-Length of 17000546 bytes exceeds the limit of 8388608 bytes in Unknown on line 0 verifique no php.ini isso: ; Maximum size of POST data that PHP will accept. post_max_size = 8M e altere para o desejado. Compartilhar este post Link para o post Compartilhar em outros sites