2012-05-27 118 views
0

我有以下行的文件foo.txt的:如何从客户端访问和读取文件?

row1 
row2 
row3 

我想创建一个链接到该文件在我的HTML,并在客户端的JavaScript阅读。有没有解决方案?

+0

是的,这就是所谓的Ajax和使用服务器端语言来阅读你的服务器上的文件。您无法直接通过javascript访问服务器或用户文件系统。 – adeneo

回答

5

如果该文件是您的服务器上,你可以使用以下。

更新:

做它同步:

$.ajax({ 
    url: "your_file.txt", 
    async: false, 
    success: function(data){ alert(data); } 
}); 
+0

谢谢@Fluidbyte,如果我正确理解你的答案,如果我在服务器端有一个文件,我可以下载它并在客户端用这种ajax调用读取它。是否还有同步解决方案? –

+0

我向代码添加了更新 - 只需使用.ajax()并指定asynch为false。 – Fluidbyte

+0

是的,我已经看到了,Fluidbyte,我很快就会去测试这个想法,如果这个想法是正确的,我会赞成并接受你的答案。 –

2

文件未在自己的服务器上:

这是不可能与客户端JavaScript由于安全方面的原因。想象一下,你正试图访问客户端的文件系统。

虽然在Internet Explorer中有文件系统对象的选项,但在客户端计算机上执行I/O通常不是一个好主意,除非没有任何损害它的目的。您的服务器上

文件:

然而,如果你的意思是读你自己的域名/空间的文件,你可以使用AJAX作为@Fluidbyte指出。


您还可以在支持它的浏览器中使用File API of html5。如果你想从您的本地系统中拉你首先需要在地方上传机制

jQuery.get('your_file.txt',function(data){ 
    alert(data); 
}); 

+0

谢谢你的回答。所以唯一的可能性是将文件的内容从服务器发送到客户端? –

+0

@LajosArpad:更新了答案。 – Sarfraz

+1

您也可以使用html5文件API来读取客户端计算机上的文件,如果他拖放文件,在文件输入中选择它们,或者如果它们包含在使用chrome的webkitdirectory文件输入选择的目录下。然后您可以修改这些文件并提示下载以保存为新文件。 – Esailija

0

您可以使用File APIsupported browsers

如果没有,请使用传统的“上传到服务器并从服务器读取”的方法。这也可以在AJAX中完成。

1

我建议你存储在客户端浏览器在HTML5的localStorage的文件,因为它是行,你可以在一个简单的循环将其保存为

localStorage.setItem("key1", "value1"); 
localStorage["key1"] = "value1"; 
... 

写serversided脚本,由线和输出读之行javascript代码。

后来读它,你只需要:

function listAllItems(){ 
    for (i=0; i<=localStorage.length-1; i++) 
    { 
     key = localStorage.key(i); 
     val = localStorage.getItem(key); 
    } 
} 

每个网站通常得到的localStorage的空间5MB。您可以编写一个函数来更新localStorage的附加的东西给它,如果需要,将其发送回服务器等

+0

是的,这是一个可行的想法,我upvote这个答案以及。 –

0
  var oFReader = new FileReader(); 
      oFReader.readAsText(document.getElementById("fileImportOrExport").files[0]); 
      oFReader.onload = function (oFREvent) { 
       var fileImportOrExportContent = oFREvent.target.result; 
      } 
      oFReader.onerror = function (OFREvent) { 
       alert("Error in reading"); 
      } 
相关问题