intelogie / filesaver
This package is auto-updated.
Last update: 2024-09-21 20:43:46 UTC
README
如果您需要保存大于blob大小限制的文件或没有足够的RAM,请查看更高级的StreamSaver.js,它可以使用新的流API异步将数据直接保存到硬盘上。这将支持进度、取消和知道何时写入完成
FileSaver.js
FileSaver.js实现了在不原生支持它的浏览器中的saveAs()
FileSaver接口。有一个FileSaver.js演示,展示了保存各种媒体类型。
FileSaver.js是客户端保存文件的解决方案,非常适合需要生成文件或保存不应发送到外部服务器的敏感信息的Web应用程序。
寻找canvas.toBlob()
来保存画布?请查看canvas-toBlob.js以获取跨浏览器的实现。
支持的浏览器
功能检测是可能的
try { var isFileSaverSupported = !!new Blob; } catch (e) {}
IE < 10
在不使用基于Flash的polyfills的情况下,可以在IE < 10中保存文本文件。有关详细信息,请参阅ChenWenBrian和koffsyrup的saveTextAs()
。
Safari 6.1+
有时可能会打开blob而不是保存。您可能需要指导您的Safari用户在文件打开后手动按⌘+S来保存文件。使用application/octet-stream
MIME类型强制下载可能会在Safari中引起问题iOS
必须在一个用户交互事件(如onTouchDown或onClick)中运行saveAs;setTimeout将阻止saveAs触发。由于iOS的限制,saveAs会在新窗口中打开而不是下载,如果您想解决这个问题,请告诉Apple此错误如何影响您。
语法
FileSaver saveAs(Blob/File data, optional DOMString filename, optional Boolean disableAutoBOM)
如果您不想FileSaver.js自动提供Unicode文本编码提示(请参阅:字节顺序标记),请将disableAutoBOM
的值设置为true
。
示例
保存文本
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"}); saveAs(blob, "hello world.txt");
不是所有浏览器都提供了标准的W3C File API Blob
接口。Blob.js是一个跨浏览器的Blob
实现,解决了这个问题。
保存画布
var canvas = document.getElementById("my-canvas"), ctx = canvas.getContext("2d"); // draw to canvas... canvas.toBlob(function(blob) { saveAs(blob, "pretty image.png"); });
注意:不是所有浏览器都提供了标准的HTML5 canvas.toBlob()
方法。canvas-toBlob.js是一个跨浏览器的canvas.toBlob()
实现,用于填补这个空白。
保存文件
您可以在不指定文件名的情况下保存File构造函数。文件本身已经包含一个名称,有多种方法可以获取文件实例(从存储、文件输入、新构造函数等),但如果您仍然想更改名称,则可以在第二个参数中更改它。
var file = new File(["Hello, world!"], "hello world.txt", {type: "text/plain;charset=utf-8"}); saveAs(file);
贡献
使用Uglify.js编译了FileSaver.js
的分布文件,如下所示:
uglifyjs FileSaver.js --mangle --comments /@source/ > FileSaver.min.js # or simply: npm run build
请确保在提交拉取请求之前构建生产版本。
安装
npm install file-saver --save bower install file-saver