我正在尝试使用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)
答案 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读取本地文件,因此只是不安全。