Como ler um arquivo de texto do servidor usando JavaScript?

No servidor, há um arquivo de texto. Usando JavaScript no cliente, quero poder ler esse arquivo e processá-lo. O formato do arquivo no servidor não pode ser alterado.

Como posso obter o conteúdo do arquivo em variables ​​JavaScript, para que eu possa fazer isso? O tamanho do arquivo pode ser de até 3,5 MB, mas pode ser facilmente processado em blocos de, digamos, 100 linhas (uma linha é de 50 a 100 caracteres).

Nenhum conteúdo do arquivo deve estar visível para o usuário; ele verá os resultados do processamento dos dados no arquivo.

Você pode usar o quadro oculto, carregar o arquivo lá e analisar seu conteúdo.

HTML:

 

JavaScript:

  

Observação: para que isso funcione no navegador Chrome, você deve iniciá-lo com o sinalizador --allow-file-access-from-files . crédito .

Carregar esse gigante blob de dados não é um grande plano, mas se você precisar, aqui está o esboço de como você pode fazê-lo usando a function $.ajax() do jQuery .

       

Você precisa usar o Ajax, que basicamente envia uma solicitação ao servidor e, em seguida, obtém um object JSON, convertido em um object JavaScript.

Verifique isso:

http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

Se você estiver usando a biblioteca jQuery, pode ser ainda mais fácil:

http://api.jquery.com/jQuery.ajax/

Dito isto, eu recomendo que você não faça o download de um arquivo de 3,5MB em JS! Não é uma boa ideia. Faça o processamento em seu servidor e, em seguida, retorne os dados após o processamento. Em seguida, se você deseja obter um novo dado, envie uma nova solicitação do Ajax, processe a solicitação no servidor e, em seguida, retorne os novos dados.

Espero que ajude.

Eu usei a sugestão de Rafid de usar o AJAX.

Isso funcionou para mim:

 var url = "http://www.example.com/file.json"; var jsonFile = new XMLHttpRequest(); jsonFile.open("GET",url,true); jsonFile.send(); jsonFile.onreadystatechange = function() { if (jsonFile.readyState== 4 && jsonFile.status == 200) { document.getElementById("id-of-element").innerHTML = jsonFile.responseText; } } 

Eu basicamente (quase literalmente) copiei este código de http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_get2, então credito a eles por tudo.

Eu não tenho muito conhecimento de como isso funciona, mas você não precisa saber como seus freios funcionam para usá-los;)

Espero que isto ajude!

Você precisa verificar o status 0 (como ao carregar arquivos localmente com XMLHttpRequest, você não obtém um status e, se for do servidor da Web, retorna o status)

 function readTextFile(file) { var rawFile = new XMLHttpRequest(); rawFile.open("GET", file, false); rawFile.onreadystatechange = function () { if(rawFile.readyState === 4) { if(rawFile.status === 200 || rawFile.status == 0) { var allText = rawFile.responseText; alert(allText); } } } rawFile.send(null); 

}

Para a leitura de arquivos do dispositivo, use isto:

readTextFile (“file: /// C: /your/path/to/file.txt”);

Para leitura de arquivo do uso do servidor:

readTextFile (” http: //test/file.txt “);

Eu realmente acho que você está fazendo isso da maneira errada. Tentando baixar e analisar um arquivo de texto + 3Mb é insanidade completa. Por que não analisar o arquivo no lado do servidor, armazenar os resultados Viva um ORM para um database (sua escolha, SQL é bom, mas também depende dos dados de valor-chave de conteúdo funciona melhor em algo como CouchDB) e use ajax para analisar dados no final do cliente.

Além disso, uma idéia ainda melhor seria pular o arquivo de texto inteiramente para um desempenho ainda melhor, se possível.