使用JavaScript HTML5文件api(离线网站)读取本地文件

时间:2013-08-15 11:06:04

标签: javascript html5 fileapi

我正在开发一个将打包在.exe文件中的网站。因此该网站将仅在线下使用。现在我需要解析一个本地的xml文档。如何使用html5文件api获取本地文件的文件句柄?

编辑:我不想使用<input...>或将文件拖到浏览器中。

3 个答案:

答案 0 :(得分:13)

恐怕我可能成为您设计的坏消息的承担者:您请求的操作明显违反了File API规范中指定的安全模型。 FileReader()的客户端实现必须确保“用户首先选择了FileReader对象正在读取的所有文件”。 (W3C File API,13。安全注意事项:http://www.w3.org/TR/FileAPI/#security-discussion)。

浏览器脚本的巨大安全风险可能只是在没有任何用户交互的情况下从路径中任意打开和读取任何文件。没有浏览器制造商允许不受限制地访问整个文件系统。

如果您的脚本确实需要该XML文件,那么您将 指示用户如何授予浏览器访问权限,因为每个浏览器都会阻止您的代码直接打开它而无需用户动作。

答案 1 :(得分:1)

嗯,从技术上来说确实有一种方法,但你希望(希望)需要绕过浏览器的安全设置,它本质上是不安全的,但不会比其他需要特定文件位置的东西更多。

那说......

<html>
  <head>
    <script>
      function foo(){
        //insert desired filereading script here.
      }
      document.getElementById("fileFoo").click();
    </script>
  </head>
  <body>
     <input type="file" id="fileFoo" display="hidden" value="filepath.extension" onclick="foo"/>
  </body>
</html>

当然,出于我的原因,我保持这种含糊不清(略显不正统),但如果您对环境有必要的控制权,那么这是完全可能的。

答案 2 :(得分:1)

这些天我遇到了同样的问题。我每次启动网页时都需要网站显示一些数据。数据需要自动适应每次发布,因此我不认为@Augusto的链接可以解决您的问题。

在尝试了不同的方法(包括编写临时的本地XLM或JSON文件)之后,我终于说服自己,可能&#34;替换&#34; &#34;数据&#34;在html文件中可能是最直接的方式。

我有一个html模板,其中有一个像[data]这样的字符串。每次启动网页时,[数据]将被[1,2,3]等实际数据所取代。实际上它是推出的新文件。

您可以转到enter link description here查看&#34;替换&#34;已经完成了。祝你好运。