FileSaver.js介绍
这是著名开源项⽬ FileSaver.js 的 README.md,我把它翻译成中⽂。发出来,⽅便⾃⼰和他⼈阅读。
项⽬地址:
如果你需要保存较⼤的⽂件,不受 blob 的⼤⼩限制或内存限制,可以看⼀下更⾼级的,
它使⽤强⼤的 stream API,可以将数据直接异步地保存到硬盘。⽀持进度、取消操作以及完成事件回调。FileSaver.js
FileSaver.js 在没有原⽣⽀持saveAs()的浏览器上实现了saveAs()接⼝。有⼀个,演⽰如何保存各种媒体类型。
FileSaver.js 是在客户端保存⽂件的解决⽅案,⾮常适合需要⽣成⽂件,或者保存不应该发送到外部服务器的敏感信息的 web App。
你还在寻Blob()来保存画布?可以跨浏览器实现这个功能。
⽀持的浏览器
Browser Constructs as Filenames Max Blob Size Dependencies
Firefox 20+Blob Yes800 MiB None
Firefox < 20data: URI No n/a
Chrome Blob Yes None
Chrome for Android Blob Yes None
Edge Blob Yes?None
IE 10+Blob Yes600 MiB None
Opera 15+Blob Yes500 MiB None
Opera < 15data: URI No n/a
Safari 6.1+*Blob No?None
Safari < 6data: URI No n/a
Safari 10.1+Blob Yes n/a None
⽀持特征检测:
try {
var isFileSaverSupported = !!new Blob;
} catch (e) {}
IE < 10
可以在 IE < 10 的浏览器实现保存⽂本⽂件,⽽不需要基于 Flash 的 polyfill。
点击查看更多详情。
Safari 6.1+
有时候 Blob(要保存的⽂件)可能会被浏览器直接打开⽽不是保存,如果⽂件在浏览器上打开了,你需要指导 Safari ⽤户⼿动按⌘ + S 保存⽂件。使⽤application/octet-stream MIME 类型强制下载在 Safari 会导致。
iOS
saveAs 必须在⽤户交互事件(如 onTouchDown 或 onClick)中运⾏; setTimeout 会阻⽌ saveAs 触发。由于 iOS 的限制,saveAs 会打开新窗⼝⽽不是下载,
如果您想修复这个问题,请这个 bug 是如何影响你的。
语法
FileSaver saveAs(Blob/File data, optional DOMString filename, optional Boolean disableAutoBOM)
如果不希望 FileSaver.js ⾃动提供 Unicode ⽂本编码提⽰(参见:),请将 disableAutoBOM 参数设置为 true。
⽰例
使⽤ require 保存⽂本
var FileSaver = require('file-saver');
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
FileSaver.saveAs(blob, "");
保存⽂本
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
saveAs(blob, "");
标准 W3C ⽂件 API 接⼝不兼容所有浏览器。
javascript高级语法
是⼀个跨浏览器的Blob实现,可以解决兼容性问题。
保存画布(canvas)
var canvas = ElementById("my-canvas"), ctx = Context("2d");
// draw
saveAs(blob, "pretty image.png");
});
注意:标准的 Blob()⽅法不兼容所有浏览器。
是⼀个跨浏览器的实现Blob()的 polyfill ⽅案。
保存⽂件
你可以保存⼀个⽂件结构,不需要指定⽂件名。⽂件⾃⾝已经包含了⽂件名,有⼀些⽅法来获取⽂件实例(从 storage,file input,新的构造函数)
如果你想修改⽂件名,你可以在第⼆个参数设置⽂件名。
var file = new File(["Hello, world!"], "", {type: "text/plain;charset=utf-8"});
saveAs(file);
贡献
FileSaver.js的发布⽂件使⽤ Uglify.js 编译⽣成,就像这样:
uglifyjs FileSaver.js --mangle --comments /@source/ > FileSaver.min.js
# or simply:
npm run build
在提交请求之前,请确保已经⽣成了⽣产版本。
安装
npm install file-saver --save
bower install file-saver
此外,如果要安装 Typscript 声明,可以这样做:
npm install @types/file-saver --save-dev