Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal. Tem uma parte de nosso sistema que faço upload de arquivos CSV, até aqui funciona legal.
Porém, necessito que o sistema valide se o arquivo a ser lido possui no máximo 100 linhas.
>
Antes de fazer o upload?
Se for depois, você lê no server, valida e retorna para o ajax.
Depois de fazer o upload Bruno, preciso ler, mas antes de começar a leitura, preciso validar pelo numero de linhas, se tiver mais que 100 linhas, preciso mostrar uma msg e abortar sem reload na tela
Então é no teu server-side.
Qual linguagem server-side está usando ?
Ai te movo para o fórum correto.
>
Então é no teu server-side.
Qual linguagem server-side está usando ?
Ai te movo para o fórum correto.
PHP
http://stackoverflow.com/questions/2162497/efficiently-counting-the-number-of-lines-of-a-text-file-200mb
A quantidade eu li assim no PHP:
$quantidade = count(file("../../tmp/$nome_atual"));if ($quantidade > 100) { echo $quantidade;}
só não estou conseguindo dar o alert
No javascript estou submetendo o form assim:
form1.submit();
>
Bom dia pessoal. Tem uma parte de nosso sistema que faço upload de arquivos CSV, até aqui funciona legal.
Porém, necessito que o sistema valide se o arquivo a ser lido possui no máximo 100 linhas.
posta o Teu codigo AJAX completo.
posta o Teu codigo AJAX completo.
index.php
function validaPrecosPrazosImportar() {if (document.getElementById('codCliente').value == '') { alert('Selecione um cliente!'); document.getElementById('codCliente').focus(); }else if(totalServicos > 3){alert("Selecione no máximo 3 serviços!");return false;}else if(document.getElementById('arquivo').value == ''){ alert('Selecione um arquivo!'); }else if(document.getElementById('arquivo').value.indexOf('.csv') == -1) {alert("Permitido apenas arquivos com extensão .csv");return false;}else{ form1.submit(); }}
PHP: upload.php No php eu faço o upload, if(isset($_POST)){$nome_arquivo = $_FILES['arquivo']['name'];$ext = strtolower(strrchr($nome_arquivo,"."));if(in_array($ext,$permitidos)){$nome_atual = md5(uniqid(time())).$ext;$tmp = $_FILES['arquivo']['tmp_name'];move_uploaded_file($tmp,$pasta.$nome_atual);}} aí conto a quantidade de linha dessa forma: $quantidade = count(file("../../tmp/$nome_atual"));if ($quantidade > 2) {echo $quantidade; }Só uma coisa:
O link que o William mandou no Post #6 falava justamente sobre contar a quantidade de linhas de forma eficiente. O usuário postou o problema em usar file(), mas você usou file() mesmo assim.
Se o arquivo for grande, vai detonar a memória. Prefira usar o loop com fgets(), como mostrado na resposta àquela dúvida.
>
Só uma coisa:
O link que o William mandou no Post #6 falava justamente sobre contar a quantidade de linhas de forma eficiente. O usuário postou o problema em usar file(), mas você usou file() mesmo assim.
Se o arquivo for grande, vai detonar a memória. Prefira usar o loop com fgets(), como mostrado na resposta àquela dúvida.
Entendi Beraldo, mesmo assim, meu maior problema não seria a contagem de linhas e sim o alert de retorno, sem sair de index.php
>
Entendi Beraldo, mesmo assim, meu maior problema não seria a contagem de linhas e sim o alert de retorno, sem sair de index.php
Olá, tudo bem?
Estou de gaiato por aqui passando depressa.
Faz muito tempo que não venho aqui.
Infelizmente não vou poder te ajudar como eu gostaria, mas vou deixar minha dica aqui:
Quando você usa o "form1.submit();", você está levando o usuário a uma página diferente, que tal ai fazer uma requisição Ajax?
$.post('enviaArquivo.php', {data: data}, function(data){
if (data.erro == true) {
// Ocorreu algo erro aqui
alert(data.msg); // Que tal armazenar o erro em uma variavel?
} else {
// oba! Nao deu nenhum erro, entao tudo ocorreu nos conformes!
}
});
Para isso funcionar você pode sair do script assim que ocorrer um erro:
if ($countLine > 100){
die(json_encode(array('erro'=>true,'msg'=>'Arquivo com mais de 100 linhas')));
}
E láá no final, você da um die novamente com erro false
if(UPLOAD_BEM_SUCEDIDO_E_DADOS_GRAVADOS) {
die(json_encode(array('erro'=>false)));// Form bem sucedido!!!
}
A partir daqui você pode usar sua imaginação para coisas magníficas!
Espero ter ajudado em algo, mesmo que brevemente.
Abraços.
Antes de fazer o upload?
Se for depois, vc lê no server, valida e retorna para o ajax.