ThiagoAS 1 Denunciar post Postado Fevereiro 26, 2013 Boa tarde pessoal, estou com o seguinte problema. Estou tentando fazer o upload de arquivos, mas as informações do arquivo não estão sendo enviadas. Todas as informações são enviadas normalmente, com exceção do upload. Segue trecho que está dando este problema no form: <form id="form_abre_chamado" method="post" enctype="multipart/form-data" action="abre_chamado.php" title="Abertura de Chamado" ><tr> <td><label for="up_arquivo">Upload Arquivo</label></tr> <tr> <td> <input type="file" name="up_arquivo" id="up_arquivo"/> </td></tr> Página da action: $uploaddir = '../uploads/';$uploadfile = $uploaddir . $_FILES['up_arquivo']['name'];var_dump($_FILES);if (move_uploaded_file($_FILES['up_arquivo']['tmp_name'], $uploadfile)){ echo "Arquivo Enviado";}else { echo "Arquivo não enviado";} Como vocês podem ver, tentei executar um var_dump. O retorno foi somente: array(0) { } Aparece também a mensagem: Notice: Undefined index: up_arquivo in <b>C:\xampp\htdocs\[...] Já verifiquei o php.ini e está ativado o upload de arquivos. Já tentei vários arquivos, de diferentes tamanhos, e o problema é o mesmo. Já chequei todas as tags para certificar se estavam fechando. Fiquei um bom tempo pesquisando e nada. Alguém poderia me ajudar, ou dar uma luz, por favor? Atenciosamente, Thiago Alguém para tentar me dar uma luz?? =( Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 26, 2013 Já experimentou retirar da tabela o formulário e fazer um novo teste ? Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Fevereiro 26, 2013 Realmente testei aqui esta tudo normal mesmo, veja se ajuda em algo isto (http://blog.thiagobelem.net/upload-de-arquivos-como-tudo-funciona/). Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Fevereiro 27, 2013 Verifiquei o site. Está muito bem explicado, porém não encontrei nada de diferente que pudesse estar gerando este problema. Estou suspeitando de que há algo de errado com meu Xampp, porém já reinstalei o mesmo e o problema persiste. Tentei retirar da tabela também, mas o problema permanece. Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Fevereiro 28, 2013 Boa tarde pessoal, reinstalei o xampp e o problema persistiu. Segue abaixo meu formulário completo para que, talvez, encontrem o que não consigo perceber. Ou quem sabe auxiliar em onde está o problema. <form id="form_abre_chamado" method="post" action="abre_chamado.php" enctype="multipart/form-data" title="Abertura de Chamado" > <input type="hidden" name="num_aux" id="num_aux" /> <div class="retorno sucesso">Chamado Registrado com Sucesso!</div> <div class="retorno erro">Erro ao Registrar Chamado!</div> <div id="container_de_erros"> <h3><img src="../img/erro.png" width="20" height="20" /> Atenção:</h3> <ul> <li><label for="titulo" class="error">O Título do Chamado deve ser preenchido</label></li> <li><label for="categoria" class="error">Uma categoria deve ser selecionada</label></li> <li><label for="descricao" class="error">A Descrição do Chamado não está respeitando o mínimo de caracteres exigido. </label></li> </ul> </div> <table> <tr> <td><label for="login">Chamado aberto por</label></td> <td><label for="data_abertura">Data</label></td> <td colspan="2"><label for="num_chamado">Chamado</label></td> </tr> <tr> <td><input type="text" name="login" id="login" readonly="true" value="<?php echo $logado; ?>" size="30" /></td> <td><input type="text" name="data_abertura" readonly="true" value="<?php echo date("d/m/Y - H:i") ?>" size="34" /> </td> <td colspan="2" align="right"><input type="text" name="num_chamado" id="num_chamado" readonly="true" style="text-align:right;" value="<?php contaChamado(); ?>" size="9" /> </td> </tr> <tr> <td><label for="email">E-mail</label></td> </tr> <tr> <td colspan="4"><input type="text" name="email" id="email" readonly="true" value="<?php selecionaEmail(); ?>" class="required email error" size="80" /></td> </tr> <tr> <td><label for="titulo">Título do Chamado</label></td> </tr> <tr> <td colspan="4"><input type="text" name="titulo" id="titulo" class="required error" size="80" /></td> </tr> <tr> <td><label for="prioridade">Prioridade</label> <img src="../img/atencao.png" width="15" height="15" /></td> <td> <label for="categoria">Categoria</label> </td> </tr> <tr> <td> <select name="prioridade" id="prioridade"> <option value="Baixa">Baixa</option> <option value="Média" selected="true">Média</option> <option value="Alta">Alta</option> <option value="Programado">Programado</option> </select> </td> <td> <select name="categoria" id="categoria" class="required error"> <option value="" disabled="true" selected="true">Selecione Categoria</option> <?php selecionaCategoria(); ?> </select> </td> </tr> <tr> <td><label for="up_arquivo">Upload Arquivo</label></td> </tr> <tr> <td> <input type="file" name="up_arquivo" /> </td> </tr > <tr> <td><label for="descricao">Descrição</label></td> </tr> <tr> <td colspan="4"><textarea name="descricao" id="descricao" cols="78" rows="4" class="required error"></textarea></td> </tr> <tr> <td> <table id="legenda" style="margin-top: 8px;"> <tr> <th colspan="2" align="center"><img src="../img/atencao.png" width="15" height="15" /> Legenda Prioridade</th> </tr> <tr> <th style="color: #0F0;">Baixa</th> <td style="width: 200px">Até 24 horas para resposta (Impede operação com saída contorno)</td> </tr> <tr> <th style="color: #FF0;">Média</th> <td style="border-top: solid 2px; border-bottom: solid 2px;">Até 6 horas para resposta (Impede operação sem saída contorno)</td> </tr> <tr> <th style="color: #F00;">Alta</th> <td>Até 1 hora para resposta (Impede operação sem saída contorno período crítico)</td> </tr> </table> </td> <td><img src="../img/loader.gif" class="loader" alt="loader" style="margin-left: 50px;" /></td> <td colspan="3"> <table id="legenda" cellpadding="0" width="200" style="margin-left: -100px; margin-bottom: 8px;"> <br/> <tr> <th colspan="2" align="center"><img src="../img/alert.png" width="16" height="16" /> Atenção</th> </tr> <tr> <td> Caso o chamado ainda esteja aberto após <b><u>7 dias</u></b> da conclusão, o mesmo será encerrado automaticamente. </td> </tr> </table> </td> </tr> </table> </form> Compartilhar este post Link para o post Compartilhar em outros sites
Snowden 94 Denunciar post Postado Março 1, 2013 tente por o caminho absoluto da pasta "uploads". tente assim.. $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/uploads/'; Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Março 5, 2013 Não deu certo também. A questão é que parece que ele não passa informação nenhuma. Só passa o que for $_POST...Tratando-se de $_FILES, não passa nada. Compartilhar este post Link para o post Compartilhar em outros sites
toli 1 Denunciar post Postado Março 5, 2013 Verifica na sua pasta temp configurada no arquivo php ini se está sendo feito uploads. upload_tmp_dir = /tmp Apague todos os arquivos desta pasta e tente novamente. Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Março 6, 2013 Boa tarde, Obrigado pela ajuda. Vverifiquei que esta linha no php.ini estava comentada. Porém, ao descomentar e reiniciar os devidos serviços, continuo com o mesmo problema. Já desinstalei o xampp e instalei apache, php e mysql separados, porém o problema persiste. Deve ser algo no php.ini, mas não consigo detectar. Compartilhar este post Link para o post Compartilhar em outros sites
Snowden 94 Denunciar post Postado Março 7, 2013 mano é possível posta todo o código da "abre_chamado.php" ? Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Março 8, 2013 Bom dia, segue código: <?php include "conexao.php"; $titulo = $_POST["titulo"]; $descricao = $_POST["descricao"]; $prioridade = $_POST["prioridade"]; $categoria = $_POST["categoria"]; $autor_chamado = $_POST["login"]; $num_aux = $_POST["num_aux"]; $query = "INSERT INTO chamado (titulo, descricao, prioridade, categoria, data_abertura, autor_chamado, num_aux) VALUES ('$titulo', '$descricao', '$prioridade', '$categoria', now(), '$autor_chamado', '$num_aux')"; $uploaddir = '/uploads/'; $uploadfile = $uploaddir . $_FILES['up_arquivo']['name']; if (move_uploaded_file($_FILES['up_arquivo']['tmp_name'], $uploaddir . $_FILES['up_arquivo']['name'])) { echo "Arquivo Enviado"; } else { echo "Arquivo não enviado"; } var_dump($_FILES); echo 'file_uploads: '. ini_get('file_uploads'). '<br />'; echo 'upload_tmp_dir: '. ini_get('upload_tmp_dir'). '<br />'; echo 'upload_max_filesize: '. ini_get('upload_max_filesize'). '<br />'; echo 'post_max_size: '. ini_get('post_max_size'). '<br />'; echo 'max_file_uploads: '. ini_get('max_file_uploads'). '<br />'; /*$executa = mysql_query($query); header("location: email.php"); if ($executa){ echo "1"; } else { echo "0"; } */ ?> - Comentei o trecho de executar a query para realizar os testes, visto que sempre imprime que o arquivo não foi enviado. - var_dump sempre exibe como se $_FILES estivesse vazio. - Esqueci de citar que também aparece a mensagem: Notice: Undefined index: up_arquivo in C:\Apache24\htdocs\Horus\php\abre_chamado.php on line 18 - O trecho em que coloquei o echo file_upload, upload_tmp_dir, etc, trouxe o seguinte resultado: file_uploads: 1upload_tmp_dir: C:\php\tmpupload_max_filesize: 8Mpost_max_size: 8Mmax_file_uploads: 20 Compartilhar este post Link para o post Compartilhar em outros sites
Snowden 94 Denunciar post Postado Março 8, 2013 mude esse trecho... $uploaddir = '/uploads/'; $uploadfile = $uploaddir . $_FILES['up_arquivo']['name']; if (move_uploaded_file($_FILES['up_arquivo']['tmp_name'], $uploaddir . $_FILES['up_arquivo']['name'])) { echo "Arquivo Enviado"; } else { echo "Arquivo não enviado"; } por esse..! e veja se funciona // Trecho que verifica se o input file contem arquivo e faz o upload if(!empty($_FILES['up_arquivo']['name'])){ // caminho da pasta "uploads" ( Se ela estiver no mesmo diretório que o arquivo "abre_chamado.php" ) $uploaddir = 'uploads/'; $uploadfile = $uploaddir . $_FILES['up_arquivo']['name']; $erros = array( 0=>'Arquivo carregado.', 1=>'O arquivo é maior do que o limite definido em upload_max_filesize no php.ini.', 2=>'O arquivo ultrapassa o limite de tamanho em MAX_FILE_SIZE.', 3=>'O upload do arquivo foi feito parcialmente.', 4=>'Selecione um arquivo!' ); if ( $_FILES['up_arquivo']['error'] == 0 ) { if ( move_uploaded_file($_FILES['up_arquivo']['tmp_name'], $uploadfile) ) { echo 'Arquivo Enviado'; }else{ echo 'Arquivo não enviado'; } }else{ echo $erros[$_FILES['up_arquivo']['error']]; } } Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Março 11, 2013 Bom dia, Obrigado pelo auxílio. Tentei conforme solicitado e também não funcionou. É como se não enviasse as informações do arquivo. Ao verificar pelo Firebug, não teve retorno algum. Ao realizar um var_dump($_FILES), ele retorna: array(0) { } Não tenho a menor ideia do que possa estar acontecendo. Compartilhar este post Link para o post Compartilhar em outros sites
Snowden 94 Denunciar post Postado Março 11, 2013 parça... fiz o teste aqui e ta blzinha... aconselho a usar esse programa -> http://www.usbwebserver.net/downloads/USBWebserver%20v8.5.zip para rodar suas aplicações PHP .. eu uso a um bom tempo e o bagulho é da hora. sem falar que é portable. Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Março 13, 2013 Nada ainda amigo...=\ Dei um print_r em $_FILES e só me retorna vazio. O estranho é que testei em outro pc, e também não funcionou. Retorna vazio também. Cheguei a comentar toda a parte de transferencia do arquivo, deixando apenas o print_r, para verificar se passava alguma informação, mas sempre retorna vazio. Pessoal, realizei um outro teste hoje e me retornou as informações do arquivo, através do print_r($_FILES). Criei um novo form somente com o campo de upload e um botão submit. Creio que o problema está nesta questão do submit, já que uso o form com Jquery. Como não uso o botão submit, o formulário é enviado para uma página chamada principal.js, que acaba exibindo um formulário com 2 botões: Salvar e Cancelar. Agora não sei como fazer para que no formulário normal ele envie as informações do arquivo, visto que não é usado um <input type="submit">. Segue trecho do código da principal.js em que envolve esta parte do formulário que está dando tanta dor de cabeça: $(function() { $( "#form_abre_chamado" ) .dialog({ autoOpen: true, width: 690, show: "scale", modal: true, resizable: false, buttons: { "Salvar": function() { $(this).submit(); }, "Cancelar": function() { $(this).dialog( "close" ); window.location.href = 'javascript:history.go(-1)'; } }, close: function() { window.location.href = 'javascript:history.go(-1)'; } }) .validate({ errorContainer : $("#container_de_erros"), errorLabelContainer : $("ul", $("#container_de_erros")), wrapper : 'li', submitHandler : function(form){ $.ajax({ url : "abre_chamado.php", type : "post", data : $(form).serialize(), beforeSend: function(){ $('.loader').css({display:"block"}); }, complete: function(){ $('.loader').css({display:"none"}); }, success : function(resposta){ if (resposta == 1) { $(".retorno.sucesso").slideDown(); $("#form_abre_chamado :input").val(""); setTimeout(function(){ $("#form_abre_chamado").dialog("close"); $(".retorno").hide(); }, 2000); window.location.href = 'javascript:history.go(-1)'; } else { $(".retorno.erro").slideDown(); } } }); } , rules : { descricao : { rangelength : [10,2000] //mínimo de 10 caracteres e no máximo 2000 } } }); $("#prazo").datepicker({ minDate:0 }); $( "#novo_chamado" ) .button() .click(function() { $("#form_abre_chamado").dialog("open"); });}); Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoAS 1 Denunciar post Postado Março 14, 2013 Bom dia pessoal, após muitas tentativas consegui solucionar o problema. Na página principal.js, acrescentei ao código: $('#Upload').click(function (e) { }) e na página do form, alterei o input para: <tr> <td><label for="up_arquivo">Upload Arquivo</label></td> </tr> <tr> <td> <input type="file" name="up_arquivo" value="up_arquivo" id="up_arquivo"/> </td> </tr> Assim, começou a realizar o input normalmente. Obrigado a todos que me auxiliaram. As sugestões de vocês foram de grande ajuda. Compartilhar este post Link para o post Compartilhar em outros sites