少女祈禱中...
Loading...
图片加载过慢?试试 从源站加载资源 X

ccloli

乱谈 Blob 与 Object URL

* 此文纯粹只是乱谈而已,基本上是只知其一不知其二,还请各位菊苣指正 _(:3

由于某些需要,需要在 JS 里创建一个 Blob(Blob 对象就是包含有只读原始数据的类文件对象)并将数据存入,然后让用户保存它。将其交给用户的方式,对 IE 有一个奇奇怪怪的 navigator.msSaveBlob(),而对大多数现代浏览器来说,可以用 URL.createObjectURL() 来生成一个以 blob: 开头的地址来指向 Blob。目前的主流浏览器都是支持的(不过很可惜,Opera (Presto) 终于在它的最后一个大版本 12 版本实现了 blob,但没有实现 Blob URLs),然而不同浏览器对 Blob 的数据大小是有限制的。这里有份 FileSaver.js 的统计数据。

Browser Constructs as Filenames Max Blob Size
Firefox 20+ Blob Yes 800 MiB
Firefox < 20 data: URI No n/a
Chrome Blob Yes 500 MiB
Chrome for Android Blob Yes 500 MiB
IE 10+ Blob Yes 600 MiB
Opera 15+ Blob Yes 500 MiB
Opera < 15 data: URI No n/a
Safari 6.1+ Blob No ?
Safari < 6 data: URI No n/a
* FileSaver.js 开发者对不支持的浏览器做了一个叫 Blob.js 的兼容脚本,但其本质应该就是将 Blob 转为 data URL

READ MORE →