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

Jie*_*eng 22 javascript io html5

我想知道是否有任何方法可以写入来自HTML5/JS的文件?在broswer ......

ecm*_*aut 24

假设您的最终目标是让用户将文件保存到他们将找到的位置,就像右键单击链接并选择"另存为..."一样,这些API还没有广泛的浏览器覆盖范围,可能是出于安全考虑.

然而,您可以做什么 - 无论是否使用API​​ - 通过指向建议文件名的属性的data:uri链接来加密它download.例如:

<a id="save" download="earth.txt" href="data:text/plain,mostly harmless&#10;">Save</a>
Run Code Online (Sandbox Code Playgroud)

点击后,至少在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 || '');
}
Run Code Online (Sandbox Code Playgroud)


mik*_*ike 19

是的,使用新的FileWriter API.

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

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

  • 正如我在[本页](http://www.html5rocks.com/en/tutorials/file/filesystem/)上找到的那样,W3C [已停止](http://lists.w3.org/Archives/Public/public -webapps/2014AprJun/0010.html)2014-04-24的API并注意到"[它不应被引用或用作实施的基础](http://www.w3.org/TR/file-系统API /)".所以它似乎只在Chrome上实现. (7认同)
  • FriendFX 是正确的。没有从浏览器写入磁盘的标准方法。甚至 chrome 将来也可能会取消对它的支持。不应使用此处的任何答案 - 即使它们似乎适用于特定浏览器版本,它们也会随着时间的推移而中断。 (2认同)

Pan*_*har 5

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

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

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