根据本网站上的其他答案,我已经觉得我知道这个问题的答案,但是,由于它稍有不同,我想问一下。使用本地Javascript访问本地文件
是否可以从机器上本地运行的JavaScript访问本地文件(也就是说,我的网站地址是file:/// C:/ ...)?或者,这也是沙盒吗?
我在做什么:我有一台独立的计算机,我希望人们能够将JSON或XML文件放入本地文件夹,这些文件夹在创建网站时读入并用于生成单个文件网页。如果JavaScript解决方案不可行,您是否可以提供其他建议?
谢谢。
根据本网站上的其他答案,我已经觉得我知道这个问题的答案,但是,由于它稍有不同,我想问一下。使用本地Javascript访问本地文件
是否可以从机器上本地运行的JavaScript访问本地文件(也就是说,我的网站地址是file:/// C:/ ...)?或者,这也是沙盒吗?
我在做什么:我有一台独立的计算机,我希望人们能够将JSON或XML文件放入本地文件夹,这些文件夹在创建网站时读入并用于生成单个文件网页。如果JavaScript解决方案不可行,您是否可以提供其他建议?
谢谢。
一个网页可以读取它载入的同一台服务器上的任何文件(这是JavaScript的跨站点策略)。这意味着页面文件:/// C:/mywebsite/index.html可以读取文件file:// C:/somedir/somefile.xml。要读取此文件,请使用ajax,将其加载到iFrame中或将其加载为javascript或css文件。
几个浏览器支持加载本地文件(和其他有趣的东西)的自定义方法,IE有activeX和Firefox有XPCOM。
从你的文章中,我认为没有”通用“的方式来读取文件?(甚至使用插件如Flash?) – JasCav
如果有人要将json字符串放入一个文件夹中,那么您可以将其设置为纯文本文件,然后使用AJAX调用文件名,就像将它指向php/asp脚本。我在进行后端测试之前一直都在测试页面。
I.E.如果你的网页是C:\ foo \ index.html,你可以让它们在这里下载到C:\ foo \ putyourstuff \ json.txt并运行一个AJAX调用“putyourstuffhere/json.txt”。
IF用户授予您的网页权限访问这些文件,并IF他们位于同一台机器的网页上,那么就没有什么阻止你获得阅读的文件上唯一访问机器通过JavaScript。
您可以使用Ajax请求读取文件,就好像它在服务器上一样。但是你必须知道文件的名字,而且你不能写文件。
这只能在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();
有关的OpenTextFile更多信息,请访问:http://msdn.microsoft.com/en-us/library/314cz14s(VS.85).aspx
这是帮助我。非常感谢:“)。 – ameliapond
据the Firefox documentation,下面的代码将工作:
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工作对我来说...
<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>
你为什么不只是尝试一下,看看它是否工作? – jdigital