使用javascript读取本地文件

时间:2013-09-10 11:57:38

标签: javascript ajax file-io

我正在尝试使用javascript从我的文件系统中读取本地文件,但我无法让它工作。我尝试过以下方法:

//Approach 1
function onInitFs(fs) {
        alert(fs.root.fullPath);
        fs.root.getFile('/test.txt', {}, function(fileEntry) {

        // Get a File object representing the file,
        // then use FileReader to read its contents.
        fileEntry.file(function(file) {
           var reader = new FileReader();

           reader.onloadend = function(e) {
             alert(this.result);
           };

           reader.readAsText(file);
        }, errorHandler);

      }, errorHandler);

    }

    //Approach 2
if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
          xmlhttp.open("GET","test.txt",false);
          xmlhttp.send();
          xmlDoc=xmlhttp.responseText;

但是对于每种方法,我都被告知无法找到该文件。文件本身的路径是“C:\ test.txt”。我试过将“file:”添加到路径中,但没有成功。我在IE,Mozilla和Chrome上尝试过各种方法。 我看了下面的每个帖子,但仍然找不到答案。有什么想法吗?

xmlhttprequest for local files

Allow Google Chrome to use XMLHttpRequest to load a URL from a local file

XMLHttpRequest not working (blank page)

Read file:// URLs in IE XMLHttpRequest

Read a local file using javascript

2 个答案:

答案 0 :(得分:0)

对于 Gecko ,来自MDN

  

从Gecko 1.9开始,允许文件只读取某些其他文件。具体地说,只有当原始文件的父目录是目标文件的祖先目录时,文件才能读取另一个文件。但是,无法以这种方式加载目录。

这意味着(例如)Firefox中的 XMLHttpRequest ,其来源为C:\foo\bar.html,只能访问C:\foo\x x的路径。

其他浏览器会有类似的限制,或者对文件:协议的限制更为严格。如果您运行服务器并从中加载它会容易得多。

答案 1 :(得分:0)

不要使用file://或任何绝对路径,您可以将文件放在服务器环境中,因此它可能会有如下路径:localhost:8080/ROOT/test.txt

由于某些浏览器不支持使用Javascript读取本地文件,因此只是不安全。