我正在开发一个火狐插件来娱乐,但我遇到了一个问题。我想读取文本文件,但似乎无法打开文件进行读取。 我在我的计算机上运行它,不涉及服务器。
这是我使用的代码:
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;
var lines=rawFile.responseText.split('rn');
var list=[];
for (var line=0; line<lines.length; line++)
{
list.push(lines[line]);
}
console.log(list);
}
}
}
rawFile.send(null);
}
readTextFile('file:///C:/Users/respect/my/privacy/ImgArray.txt');
经过一些测试后,该脚本已达到rawFile.onreadystatechange =
尽我所能。我的道路似乎是正确的,那么我在这里做错了什么?
出于安全原因,使用file://
打开任意文件不起作用。如果您被允许从文件系统中读取本地文件,则任何插件或网站都可以尝试扫描您的硬盘驱动器并读取任何内容。
如果您将文件托管在您拥有的具有适当跨源标头的域上,它应该可以工作,例如http://mydomain/myfiles/ImgArray.txt
.
如果你想要一个本地文件,你必须使用HTML5文件API,并让用户选择要授予权限的文件。
将最后一行更改为此
readTextFile('./privacy/ImgArray.txt'(; 或 readTextFile("./privacy/ImgArray.txt"(; 并确保您的文件存在于该路径中。
祝你好运