我可以用 HTML5/JS 编写文件吗?

IT技术 javascript html io
2021-03-18 01:17:29

我想知道是否有任何方法可以从 HTML5/JS 写入文件?在浏览器...

6个回答

假设您的最终目标是让用户将您的文件保存在他们可以找到的地方,例如当右键单击链接并选择“另存为...”时,这些 API 还没有广泛的浏览器覆盖范围,可能是由于出于安全考虑。

但是,无论是否使用 API,您都可以做的是通过一个指向data:uri的链接来实现它,该uridownload属性指定了您建议的文件名。例如:

<a id="save" download="earth.txt" href="data:text/plain,mostly harmless&#10;">Save</a>

单击时,至少在 Chrome 中,这将保存一个包含文本mostly harmless(和尾随换行符)的文件,如earth.txt您的下载目录中一样。要从 javascript 设置文件内容,请先调用此函数:

function setSaveFile(contents, file_name, mime_type) {
  var a = document.getElementById('save');
  mime_type = mime_type || 'application/octet-stream'; // text/html, image/png, et c
  if (file_name) a.setAttribute('download', file_name);
  a.href = 'data:'+ mime_type +';base64,'+ btoa(contents || '');
}

是的,使用新的 FileWriter API。

http://www.w3.org/TR/file-writer-api/

您可以在此处查看当前的浏览器支持:http : //caniuse.com/#feat=filesystem

FriendFX 是正确的。没有从浏览器写入磁盘的标准方法。甚至 chrome 将来也可能会取消对它的支持。不应使用此处的任何答案 - 即使它们似乎适用于特定浏览器版本,它们也会随着时间的推移而中断。
2021-04-21 01:17:29
在那个链接上写着 firefox 和 chrome 支持文件接口,但FileWriter据我所知,它们不支持
2021-05-07 01:17:29
正如我在此页面上发现的那样,W3C于 2014年 4 月 24停止了该 API,并指出“不应将其作为参考或用作实施的基础”。所以它似乎只在 Chrome 上实现。
2021-05-15 01:17:29

是的,可以使用 HTML5+JS 读取和写入文件。

帮助您入门的链接 - Exploring FileSystem API

不久前,我还为 SpeckyBoy 写了一篇关于您可能会觉得有用的同一主题的文章 - http://speckyboy.com/2012/10/30/getting-to-grips-with-the-html5-file-api- 2/

据我所知,您不能从 HTML5 写入文件,因为让网页访问用户的文件会带来安全风险。

如果您只需要存储一些数据以便您的页面以后可以访问它,HTML5 确实有一种叫做 Web Storage 的东西可以做到这一点。

或者您可以将数据存储在 cookie(如果它非常小)或服务器上。

同意。此处的反对票未能阅读上述评论,这些评论表明对 FileWriter API 的支持已被弃用,并且可能会完全消失。
2021-04-29 01:17:29

另一种可能性是考虑在 Windows 平台中创建类似 ClickOnce 应用程序的东西。这将提供一个指向可下载可执行文件的链接,该可执行文件将在用户的操作系统中运行,但可以进行基于 Web 的回调以发送和检索数据。ClickOnce 应用程序可以嵌入浏览器控件,因此您将拥有一个与 Web 兼容的应用程序,并且能够直接与用户的存储进行对话。