Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用本地Javascript访问本地文件_Javascript - Fatal编程技术网

使用本地Javascript访问本地文件

使用本地Javascript访问本地文件,javascript,Javascript,根据这个网站上的其他答案,我已经觉得我知道这个问题的答案了,但是,因为它有点不同,我想问 是否可以从机器上本地运行的JavaScript访问本地文件(也就是说,我的网址是file:///C:/...)? 或者,这也是沙盒吗 我想做的是:我有一台独立的计算机,我希望人们能够将JSON或XML文件放入本地文件夹,在创建网站时读取这些文件,并用于生成单个网页。如果JavaScript解决方案不可行,您能否提供其他建议 谢谢。如果人们要将json字符串放入文件夹,您可以将其设置为纯文本文件,然后使用A

根据这个网站上的其他答案,我已经觉得我知道这个问题的答案了,但是,因为它有点不同,我想问

是否可以从机器上本地运行的JavaScript访问本地文件(也就是说,我的网址是file:///C:/...)? 或者,这也是沙盒吗

我想做的是:我有一台独立的计算机,我希望人们能够将JSON或XML文件放入本地文件夹,在创建网站时读取这些文件,并用于生成单个网页。如果JavaScript解决方案不可行,您能否提供其他建议


谢谢。

如果人们要将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>