我正在寻找一种在 Safari 中保存大文件(正好 8 兆字节)的方法。我已经尝试使用 URI 方案以及 eligreyFileSaver 和 flash 插件 Downloadify。所有这些都会导致 Safari 分配内存,直到 web worker 进程达到大约 2 GB,然后 Safari 崩溃。
我意识到以前有这样的问题,但我已经尝试了这些问题导致的所有问题。链接:
此代码适用于 Firefox 和 Google Chrome(使用 eligreyFileSaver 库进行 saveAs):
function io_saveData (){
var bb;
var buffer;
var data;
alert ("The file will now be saved.");
bb = new BlobBuilder();
for (var i = 0;i<kMapHeight;i++){
var stduint8 = new Uint8Array (uint16map[i].buffer);
var stduint8LittleEndian = new Uint8Array (kMapWidth*2);
//byte swap work around
for (var j = 0;j<stduint8.length;j+=2){
stduint8LittleEndian [j] = stduint8 [j+1]
stduint8LittleEndian [j+1] = stduint8 [j];
}
bb.append(stduint8LittleEndian.buffer);
}
var blob = bb.getBlob("example/binary");
saveAs(blob, "Data File");
bb = null;
buffer = null;
data = null;
}
我正在寻找一种让 Safari 创建下载而不会崩溃的方法。部署区域是 Mac OS X,所以每台机器都会内置 apache 和 PHP,不过我宁愿不走那条路。