使用本地Javascript访问本地文件
根据这个网站上的其他答案,我已经觉得我知道这个问题的答案了,但是,因为它有点不同,我想问 是否可以从机器上本地运行的JavaScript访问本地文件(也就是说,我的网址是file:///C:/...)? 或者,这也是沙盒吗 我想做的是:我有一台独立的计算机,我希望人们能够将JSON或XML文件放入本地文件夹,在创建网站时读取这些文件,并用于生成单个网页。如果JavaScript解决方案不可行,您能否提供其他建议使用本地Javascript访问本地文件,javascript,Javascript,根据这个网站上的其他答案,我已经觉得我知道这个问题的答案了,但是,因为它有点不同,我想问 是否可以从机器上本地运行的JavaScript访问本地文件(也就是说,我的网址是file:///C:/...)? 或者,这也是沙盒吗 我想做的是:我有一台独立的计算机,我希望人们能够将JSON或XML文件放入本地文件夹,在创建网站时读取这些文件,并用于生成单个网页。如果JavaScript解决方案不可行,您能否提供其他建议 谢谢。如果人们要将json字符串放入文件夹,您可以将其设置为纯文本文件,然后使用A
谢谢。如果人们要将json字符串放入文件夹,您可以将其设置为纯文本文件,然后使用AJAX调用文件名,就像将其指向php/asp脚本一样。在我完成后端测试之前,我一直在测试页面
也就是说,如果你的页面是C:\foo\index.html,你可以让它们放到C:\foo\putyourstuff\json.txt,然后运行一个AJAX调用“putyourstuff here/json.txt”。如果用户授予你访问这些文件的网页权限,如果这些文件与网页位于同一台机器上,然后,没有任何东西可以阻止您通过JavaScript获得对机器上文件的只读访问。您可以使用Ajax请求读取文件,就像它是对服务器的一样。但是您必须知道文件名,并且不能写入文件。是的,尽管不安全,但您可以使用:
fopen("c:\\MyFile.txt", 'r');
你应该考虑某种服务器端脚本语言,比如某种形式的.< /p> 如果你制作超文本应用程序页面(.HTA)而不是HTML页面(.HTM/html),那么你可以使用FielSisteObjor对象对文件系统进行完全访问。
(当然,受运行浏览器的用户帐户的文件访问权限限制。)这只适用于IE,但如果这对您来说不是问题,下面是一些写入文件的示例代码:
var fso, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
s = fso.OpenTextFile("c:\\path\\to\\myfile.txt" , 8, 1, -2);
s.writeline("Hello World");
s.Close();
然后从中读出:
f = fso.OpenTextFile(filename, ForReading);
while (!f.AtEndOfStream) {
var r = f.ReadLine();
document.write (r + "<br />");
}
f.Close();
f=fso.OpenTextFile(文件名,用于读取);
而(!f.AtEndOfStream){
var r=f.ReadLine();
document.write(r+“
”);
}
f、 Close();
有关OpenTextFile的更多信息,请查看:网页可以读取从同一服务器加载的任何文件(这是JavaScript的跨站点策略)。这意味着页面file:///C:/mywebsite/index.html 可以读取文件file://C:/somedir/somefile.xml。要读取此文件,请使用ajax,将其加载到iFrame中,或者将其加载为javascript或css文件 一些浏览器支持加载本地文件(和其他有趣的东西)的自定义方法,IE有activeX,Firefox有XPCOM。根据,以下代码可以工作:
var req = new XMLHttpRequest();
req.open('GET', 'file:///home/user/file.json', false);
req.send(null);
if(req.status == 0)
dump(req.responseText);
我似乎记得它只在与HTML页面相同的目录中工作。我不知道这在其他浏览器中是否有效。这在Firefox中对我有效 改编自本网站的代码:
函数ReadFileContent(){
警报(local_file.document.firstChild.innerHTML);
}
读取本地文件
如果窗口显示本地文件C:\test.txt的内容
演示成功了。如果没有出现其他窗口,则该窗口失败。你可以
现在关闭这个窗口
重要的是要注意,虽然HTA是一个很好的应用程序,但它也是一种MS技术,仅限于Windows/IET,也就是说。。。如果您知道您只打算在Windows/IE上使用此代码,那么HTA可能是一个非常好的选择。您可以在哪个浏览器中运行该代码?抱歉,这不是一个标准函数,我使用了一个自定义函数“fopen”,很长,抱歉。你为什么不试试看它是否有效?从你的帖子中,我认为没有“通用”的方法来读取文件?(甚至使用Flash之类的插件?)这对我很有帮助。非常感谢:“)。
<HTML>
<BODY onLoad="ReadFileContent()" >
<iframe id="local_file" name="local_file"
src="file:///C:/test.txt"
height=0 width=0>
</iframe>
<script>
function ReadFileContent(){
alert(local_file.document.firstChild.innerHTML);
}
</script>
<h2>Read Local File</h2>
<P>
If a window displays the content of your local file C:\test.txt
the demo worked. If no additional window appears, it failed. You can
close this window now.</p>
</body>
</html>