【发布时间】:2014-11-08 15:17:32
【问题描述】:
嗨,我正在使用 java 脚本从我的电脑中读取 txt 文件。 我尝试通过 3 种方式来做到这一点:
function readTextFile(file) {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4) {
if (rawFile.status === 200 || rawFile.status == 0) {
var allText = rawFile.responseText;
console.log(allText);
}
}
}
rawFile.send(null);
}
console.log("1");
readTextFile("text.txt"); //GOOD
console.log("2");
readTextFile("D:/Documents/Documents/Aptana Studio 3 Workspace/Yonit_web_services/test/text.txt"); //BAD
console.log("3");
readTextFile("file:///D:/Documents/Documents/Aptana Studio 3 Workspace/Yonit_web_services/test/text.txt"); //BAD
它们都指向同一个文件 我遇到了这样的错误:
XMLHttpRequest 无法加载 file:///D:/Documents/Documents/Aptana%20Studio%203%20Workspace/Yonit_web_services/test/text.txt。仅 HTTP 支持跨源请求。 test.html:21readTextFile test.html:21(匿名函数) test.html:26
这是为什么?谢谢。
【问题讨论】:
-
出于安全考虑,JavaScript 无法访问本地文件系统。
-
XMLHttpRequest对跨域有一些限制。话虽这么说,就你这样做的方式而言,D:/和file:///D:/使文件看起来可以在源之外访问。 -
您需要使用 在 javascript 中读取本地文件。您选择文件,然后运行 URL.createObjectURL(inpFile.files[0]);要获得一个 url,您可以按编码提供给您的 readTextFile() 函数。您不能在输入中硬编码路径,出于安全原因,用户必须选择文件。
标签: javascript