Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

11closed

input type file não carrega arquivo .CSV

Recommended Posts

Olá pessoal, estou com um problema aqui e não consigo achar a solução de jeito nenhum

 

o $_FILES['file'] não está recebendo o arquivo

 

index.php

<?php
error_reporting(E_ALL & ~ E_NOTICE);
include("config/config.php");
header("Content-Type: text/html; charset=ISO-8859-1",true);
?>
<form id="form" name="form"  action="add_analise.php" enctype="multipart/form-data" method="POST">
	<b>Importe o arquivo .CSV : </b><input name="file" id="file" type="file"   /><br>
	<hr>
	<input type="submit"  value="Ver Analise" />  
</form>

add_analise.php

<?php

include("config/config.php");
header("Content-Type: text/html; charset=ISO-8859-1",true);

 
//Define o lugar que será salvo o arquivo com um nome aleatório
$arquivo = 'csv/' . uniqid(rand(), true) . '.csv';

if (empty($_FILES['file'])) {
    echo 'A requisição não veio por POST';
    exit;
} elseif ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
    echo 'Erro ao fazer o upload', $_FILES['file']['error'];
    exit;
} elseif (!move_uploaded_file($_FILES['file']['tmp_name'], $arquivo)) {
     echo 'Erro ao mover para a pasta';
     exit;
}

$handle = fopen ($arquivo, 'rb');

//Verifica se o arquivo pode ser lido
if (!$handle) {
    echo 'Falha ao ler o arquivo';
    exit;
}

// Lê o conteúdo do arquivo
while(!feof($handle)){
    // Pega os dados da linha
    $linha = fgets($handle, 1024);

    // Divide as Informações das celular para poder salvar
    $dados = explode(';', $linha);
 
     echo $dados[0]."<br>"; 
 
    // Verifica se o Dados Não é o cabeçalho ou não esta em branco
    if($dados[0] != 'Date' && !empty($linha)){
 
        //mysql_query('INSERT INTO emails (nome, email) VALUES ("'.$dados[0].'", "'.$dados[1].'")');
    }
}

// Fecha arquivo aberto
fclose($handle);

//Deleta o arquivo após usá-lo
unlink($arquivo);

 ?>

aqui aparece a mensagem "A requisição não veio por POST"

 

o arquivo que estou tentando enviar é um .CSV com apenas 4 kb,  

la no php.ini, parece estar tudo certo, 

Estou usando o Windows 10 com programa WAMP, e estou no localhost

a pasta "csv" e os arquivos "index.php" e "add_analise.php" estão na mesma pasta, dentro do localhost, já tentei varios testes, e não estou entendendo porque o $_File não recebe o arquivo .csv

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei mas talvez file pode ser um nome reservado do PHP, tenta mudar o nome pra arquivo e tenta também mudar empty para if(!isset($_FILES['arquivo']))

Compartilhar este post


Link para o post
Compartilhar em outros sites

não funcionou, deu a mesma mensagem 

 

as alterações foram essas, certo?

<input name="arquivo" id="arquivo" type="file"   /> 

if (!isset($_FILES['arquivo'])) {
    echo 'A requisição não veio por POST';
    exit;
} elseif ($_FILES['arquivo']['error'] !== UPLOAD_ERR_OK) {
    echo 'Erro ao fazer o upload', $_FILES['arquivo']['error'];
    exit;
} elseif (!move_uploaded_file($_FILES['arquivo']['tmp_name'], $pasta)) {
     echo 'Erro ao mover para a pasta';
     exit;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz alguns testes aqui, mas o erro continua, não entendo porque

 

<?php
//Define o lugar que será salvo o arquivo com um nome aleatório
$arquivo = 'csv/' . uniqid(rand(), true) . '.csv';

if (!isset($_FILES['file'])) {
    echo 'A requisição parece não ter vindo por POST<br>', PHP_EOL;
    echo 'Depurando:<br>', PHP_EOL;

    echo '<pre>';

    echo '$_SERVER', PHP_EOL;
    print_r($_SERVER);

    echo '$_POST', PHP_EOL;
    print_r($_POST);

    echo '$_FILES', PHP_EOL;
    print_r($_FILES);

    echo '</pre>';

    exit;
} elseif ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
    echo 'Erro ao fazer o upload:', $_FILES['file']['error'];
    exit;
} elseif (!move_uploaded_file($_FILES['file']['tmp_name'], $arquivo)) {
     echo 'Erro ao mover para a pasta';
     exit;
}

$handle = fopen($arquivo, 'rb');

//Verifica se o arquivo pode ser lido
if (!$handle) {
    echo 'Falha ao ler o arquivo';
    exit;
}

// Lê o conteúdo do arquivo
while(!feof($handle)){
    // Pega os dados da linha
    $linha = fgets($handle, 1024);

    // Divide as Informações das celular para poder salvar
    $dados = explode(';', $linha);



     echo $dados[0]."<br>";


    // Verifica se o Dados Não é o cabeçalho ou não esta em branco
    if($dados[0] != 'Date' && !empty($linha)){


        //mysql_query('INSERT INTO emails (nome, email) VALUES ("'.$dados[0].'", "'.$dados[1].'")');
    }
}

// Fecha arquivo aberto
fclose($handle);

//Deleta o arquivo após usá-lo
unlink($arquivo);

o ERRO que aparece é assim

 

A requisi��o parece n�o ter vindo por POST
Depurando:
$_SERVER
Array
(
    [HTTP_HOST] => localhost
    [HTTP_CONNECTION] => keep-alive
    [CONTENT_LENGTH] => 3358
    [HTTP_CACHE_CONTROL] => max-age=0
    [HTTP_ORIGIN] => http://localhost
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
    [CONTENT_TYPE] => multipart/form-data; boundary=----WebKitFormBoundary3BAHZIu22BQXsXbp
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    [HTTP_REFERER] => http://localhost/galgos/
    [HTTP_ACCEPT_ENCODING] => gzip, deflate, br
    [HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
    [HTTP_COOKIE] => cookieStorage=%7B%22version%22%3A2%2C%22odds%22%3A%22fractional%22%2C%22sortBy%22%3A%22number%22%2C%22cardTab%22%3A%22card%22%2C%22cardsListBy%22%3A%22meetings%22%2C%22showUserBalance%22%3Atrue%2C%22userId%22%3A745536927876%7D; _ga=GA1.1.1741532905.1493168313; __utma=111872281.1741532905.1493168313.1493768513.1493864870.4; __utmz=111872281.1493168313.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
    [PATH] => C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Skype\Phone\;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps
    [SystemRoot] => C:\Windows
    [COMSPEC] => C:\Windows\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    [WINDIR] => C:\Windows
    [SERVER_SIGNATURE] => 
Apache/2.4.23 (Win64) PHP/5.6.25 Server at localhost Port 80


    [SERVER_SOFTWARE] => Apache/2.4.23 (Win64) PHP/5.6.25
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => ::1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => ::1
    [DOCUMENT_ROOT] => D:/wamp64/www
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => D:/wamp64/www
    [SERVER_ADMIN] => wampserver@wampserver.invalid
    [SCRIPT_FILENAME] => D:/wamp64/www/teste/add_analise.php
    [REMOTE_PORT] => 54949
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => POST
    [QUERY_STRING] => 
    [REQUEST_URI] => /teste/add_analise.php
    [SCRIPT_NAME] => /teste/add_analise.php
    [PHP_SELF] => /galgos/add_analise.php
    [REQUEST_TIME_FLOAT] => 1494269806.682
    [REQUEST_TIME] => 1494269806
)
$_POST
Array
(
)
$_FILES
Array
(
)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.