Javascript 如何从客户端访问和读取文件?

Javascript 如何从客户端访问和读取文件?,javascript,html,web,Javascript,Html,Web,我有一个文件foo.txt,其中包含以下行: row1 row2 row3 我想在我的HTML中创建一个指向这个文件的链接,并在客户端用Javascript读取它。有解决方案吗?文件不在您自己的服务器上: 由于安全原因,这在客户端JavaScript中是不可能的。假设您正在尝试访问客户端的文件系统 虽然Internet Explorer中有文件系统对象的选项,但在客户机上进行I/O通常不是一个好主意,除非无意对其造成损害 服务器上的文件: 然而,如果您打算从自己的域/空间读取文件,您可以使用@

我有一个文件foo.txt,其中包含以下行:

row1
row2
row3

我想在我的HTML中创建一个指向这个文件的链接,并在客户端用Javascript读取它。有解决方案吗?

文件不在您自己的服务器上:

由于安全原因,这在客户端JavaScript中是不可能的。假设您正在尝试访问客户端的文件系统

虽然Internet Explorer中有文件系统对象的选项,但在客户机上进行I/O通常不是一个好主意,除非无意对其造成损害

服务器上的文件:

然而,如果您打算从自己的域/空间读取文件,您可以使用@Fluidbyte指出的AJAX



您也可以在支持该文件的浏览器中使用。

如果该文件位于您的服务器上,您可以使用以下内容:

jQuery.get('your_file.txt',function(data){
  alert(data);
});
如果你想从你的本地系统拉进来,你首先需要一个上传机制

更新:

同步进行:

$.ajax({
    url: "your_file.txt",
    async: false,
    success: function(data){ alert(data); }
});
你可以用它来做这个


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

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

localStorage.setItem("key1", "value1");  
localStorage["key1"] = "value1";
...
编写一个服务器端脚本,逐行读取并输出javascript代码

稍后阅读时,您只需:

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

对于(i=0;iYes,它称为ajax,使用服务器端语言读取服务器上的文件。您无法直接使用javascript访问服务器或用户文件系统。感谢您的回答。因此,唯一的可能是将文件内容从服务器发送到客户端?@LajosArpad:更新了答案。您也可以使用html5文件API,用于读取客户端计算机上的文件,如果他拖放这些文件,在文件输入中选择它们,或者如果它们包含在使用chrome的webkitdirectory文件输入选择的目录下。然后,您可以修改这些文件并提示下载以另存为新文件。@Esailija:Yep,感谢您指出这一点。我想要包含以下内容的文件:获取一些关于网页的语义信息,客户端可以下载和阅读这些信息。谢谢,@Fluidbyte,如果我正确理解了你的答案,如果我在服务器端有一个文件,我可以通过这种ajax调用下载它并在客户端阅读它。还有同步解决方案吗?我添加了一个代码更新-只需要使用.ajax()并指定asynch false。是的,我看到了,Fluidbyte,我将很快对此进行测试,如果这个想法是正确的,我将投票并接受你的答案。这很有魅力,谢谢。我投票给你,我接受你的答案。再次感谢你。是的,这是一个可行的想法,我也投票给这个答案。
            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");
            }