我正在使用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
那是什么意思?感谢。答案 0 :(得分:1)
我有一段时间遇到同样的问题。我通过Windows命令提示符使用以下参数打开Chrome修复此问题:--disable-web-security
请注意,这存在安全漏洞。
答案 1 :(得分:0)
答案 2 :(得分:0)
读取文件的第一种方法:
readTextFile("text.txt"); //GOOD
正在运行,因为"text.txt"
是一个相对路径,如果你有文件系统,那就是相同的路径:
\index.html
\img\img.png
在这方面,img.png可以访问index.html,您可以通过使用相对路径访问父目录和parrent父目录中的文件和文件夹。
从Windows命令提示符,您可以使用dir
测试这些相对路径,如下所示:
REM Dir will show contents of current directory
Dir
REM Dir .. will show contents of parent directory
Dir ..
REM Dir ../.. will show contents of parent's parent directory
Dir ../..
相同的路径 应该在JavaScript
中工作话虽如此,d:/
和file://D:/
的限制很可能是出于安全原因。您可以查看http://en.wikipedia.org/wiki/Samba_%28software%29了解详情。
答案 3 :(得分:0)
您可以随时做一件事,将其放在应用程序访问它的某个URL上(仅当它不包含任何安全信息时)。