使用HTML5 / JavaScript生成并保存文件

JavaScript HTML

斯丁前端

2020-03-24

我最近一直在摆弄WebGL,并让Collada阅读器工作。问题是它的运行速度非常慢(Collada是一种非常冗长的格式),因此我将开始将文件转换为更易于使用的格式(可能是JSON)。我已经有了使用JavaScript解析文件的代码,因此我也可以将其用作导出器!问题正在保存。

现在,我知道我可以解析文件,将结果发送到服务器,然后让浏览器从服务器请求文件下载作为下载。但是实际上,服务器与该特定过程无关,那么为什么要参与其中呢?我已经在内存中保存了所需文件的内容。有什么办法可以使用户使用纯JavaScript进行下载?(我对此表示怀疑,但也可能会问...)

需要明确的是:我不会在用户不知情的情况下访问文件系统!用户将提供一个文件(可能通过拖放),脚本将转换文件在内存中的位置,并提示用户下载结果。就浏览器而言,所有这些都应该是“安全”的活动。

[编辑]:我没有提前提到它,所以回答“ Flash”的海报是足够有效的,但是我正在做的部分工作是试图强调使用纯HTML5可以完成的工作...因此Flash是就我而言 (尽管对于使用“真实” Web应用程序的任何人来说,这都是一个完全正确的答案。)在这种情况下,除非我不想让服务器参与其中,否则看起来我很不走运。不管怎么说,还是要谢谢你!

第3250篇《使用HTML5 / JavaScript生成并保存文件》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
斯丁 2020.03.24

看一下Doug Neiner的Downloadify,它是基于Flash的JavaScript接口。

Downloadify是一个很小的JavaScript + Flash库,可在浏览器中即时生成和保存文件,而无需服务器交互。

蛋蛋 2020.03.24

HTML5定义了一种window.saveAs(blob, filename)方法。目前没有任何浏览器支持。但是,有一个名为FileSaver.js的兼容性库,可以将该功能添加到大多数现代浏览器(包括Internet Explorer 10+)中。Internet Explorer 10支持一种navigator.msSaveBlob(blob, filename)方法(MSDN),该方法在FileSaver.js中用于Internet Explorer支持。

I wrote a blog posting with more details about this problem.

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android