Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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 HTML5文件api读取本地文件(脱机网站)_Javascript_Html_Fileapi - Fatal编程技术网

使用JavaScript HTML5文件api读取本地文件(脱机网站)

使用JavaScript HTML5文件api读取本地文件(脱机网站),javascript,html,fileapi,Javascript,Html,Fileapi,我在一个网站上工作,该网站将打包在一个.exe文件中。因此,该网站将仅在脱机状态下使用。现在我需要解析一个本地xml文档。如何使用html5文件api获取本地文件的文件句柄 编辑:我不想使用或将文件拖到浏览器中。恐怕我会给您的设计带来坏消息:您请求的操作明显违反了文件API规范中指定的安全模型。FileReader()的客户端实现必须确保“用户已首先选择了FileReader对象正在读取的所有文件。”(W3C文件API,13.安全注意事项:) 浏览器脚本可以在没有任何用户交互的情况下任意打开并读

我在一个网站上工作,该网站将打包在一个.exe文件中。因此,该网站将仅在脱机状态下使用。现在我需要解析一个本地xml文档。如何使用html5文件api获取本地文件的文件句柄


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

恐怕我会给您的设计带来坏消息:您请求的操作明显违反了文件API规范中指定的安全模型。FileReader()的客户端实现必须确保“用户已首先选择了FileReader对象正在读取的所有文件。”(W3C文件API,13.安全注意事项:)

浏览器脚本可以在没有任何用户交互的情况下任意打开并读取路径中的任何文件,这将是一个巨大的安全风险。任何浏览器制造商都不会允许像这样不受限制地访问整个文件系统


如果您的脚本确实需要该XML文件,您将指导用户如何授予浏览器对该文件的访问权限,因为每个浏览器都会阻止您的代码在没有用户操作的情况下直接打开它。

好吧,从技术上讲确实有一种方法,但您将(希望如此)需要绕过浏览器的安全设置,这本身就是不安全的,但并不比其他需要特定文件位置的设置更安全

也就是说

<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>

函数foo(){
//在此处插入所需的文件读取脚本。
}
document.getElementById(“fileFoo”)。单击();

当然,我一直保持这种含糊不清(而且有点非正统)出于我的原因,但如果你对环境有必要的控制,这是完全可能的。

我最近也遇到了同样的问题。我需要网站在每次启动网页时显示一些数据。这些数据需要自动适应每次启动,所以我认为@Augusto的链接无法解决你的问题激动

在尝试了不同的方法(包括编写临时本地XLM或JSON文件)之后,我终于说服自己,也许“替换”html文件中的“数据”是最简单的方法

我有一个html模板,里面有一个像[data]这样的字符串。每次启动网页时,[data]都会被像[1,2,3]这样的真实数据所取代。所以实际上启动的是新文件


你可以去看看“替换”是如何完成的。祝你好运。

不知道你在这里想说什么。调用.click()将打开文件选择对话框,因为无法将任何“值”信息传递到文件输入字段。有点晚了,但我认为electronjs是一种方法。