【问题标题】:Can JS read a local file from local web-page?JS 可以从本地网页读取本地文件吗?
【发布时间】:2020-12-08 00:09:49
【问题描述】:

我想使用 html+css+js 来创建一个用于设置模拟的界面。该界面用于通过使用多个输入文件来创建模拟的可视化和输出参数文件。

这个网页不需要在服务器上运行,只在同一台机器上本地运行。

我了解为什么不允许服务器页面访问客户端文件,并且服务器页面可能会访问另一个服务器文件。本地网页是否可以访问本地文件?

使用file:///path/to/file.txt 可以查看任何文件的内容,因此我认为可以以某种方式将结果以字符串的形式拉入正在运行的页面中。但是我几乎没有成功。

如果可能,请您详细说明如何将 txt 文件的内容读入字符串的简单示例?

非常感谢

【问题讨论】:

  • 据我所知,这是不可能的。有几个框架用于使用 HTML/CSS/JS 构建桌面应用程序。例如,您总是可以尝试使用基于电子的应用程序。这使您可以使用 node.js fs 函数访问文件。
  • 如果您不介意用户交互,如果用户选择了文件,.. 那么您可以使用input type[file] 并读取数据。出于安全原因,直接访问 file:// 被浏览器阻止,尽管您通常可以设置一些标志来覆盖它。
  • 谢谢两位。 @Keith 我知道 chrome 的 --allow-file-access-from-files 标志,我希望类似的东西会自动应用于本地运行的页面。

标签: javascript html file local webpage


【解决方案1】:

node.js 是一个 javascript 实现,因为它是一个运行在机器上的进程,所以可以很容易地做这些事情。一个网页正在浏览器中运行,它无法访问文件系统,因此这是不可能的,但是您可以将您的 Web 应用程序捆绑到一个 electron 应用程序中,该应用程序将能够访问 osand 文件系统,所以虽然它会使用 html 和 javascript,但它仍然需要安装。

【讨论】:

  • 我玩过node.js,但理想情况下我想避免每次我想使用该界面时都必须运行node。从你和@Jacob 的建议看来,电子可能是我所追求的。谢谢!
【解决方案2】:

如果您使用的是 Chrome,您可以使用 --allow-file-access-from-files 标志启动它。然后你可以这样做:

fetch('file:///path/to/file.txt')
.then(function(response) {
    // do something with it
})

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多