0

我正在尝试使用 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”。我尝试在路径前添加“文件:”但没有成功。我已经在 IE、Mozilla 和 Chrome 上尝试过每种方法。我查看了下面的每个主题,但仍然找不到答案。有任何想法吗?

本地文件的 xmlhttprequest

允许 Google Chrome 使用 XMLHttpRequest 从本地文件加载 URL

XMLHttpRequest 不工作(空白页)

在 IE XMLHttpRequest 中读取文件:// URL

使用 javascript 读取本地文件

4

2 回答 2

0

对于壁虎,来自MDN

从 Gecko 1.9 开始,文件只能读取某些其他文件。具体来说,一个文件只有在源文件的父目录是目标文件的祖先目录时才能读取另一个文件。但是,不能以这种方式加载目录。

这意味着(例如)Firefox 中的XMLHttpRequestC:\foo\bar.html的来源只能访问C:\foo\x某个x路径的位置。

其他浏览器也会有类似的限制,或者对file: protocol 的限制甚至更多。如果您运行服务器并从中加载会容易得多。

于 2013-09-10T12:02:48.963 回答
0

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

因为有些浏览器不支持用 Javascript 读取本地文件,只是不安全。

于 2013-09-10T12:03:17.253 回答