3

我正在寻找一种在 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,不过我宁愿不走那条路。

4

2 回答 2

1

干得好。首先将文件存储在 HTML5 文件系统中,并在完成数据存储后使用 filesaver api 下载它。我进行了研究,并且在没有阻止 UI 和浏览器崩溃的情况下获得了很好的结果。最好在 webworkers 中进行以获得应用程序的性能。

这是对它有帮助的文章。

TEMPORARY storage has a default quota of 50% of available disk as a shared pool. (50GB => 25GB) (Not restricted to 1GB anymore)

http://updates.html5rocks.com/tag/filesystem

于 2012-09-05T11:50:17.937 回答
0

不幸的是,Safari7 似乎不支持写入文件。

https://github.com/eligrey/FileSaver.js/issues/12

http://caniuse.com/#feat=文件系统

于 2014-07-25T17:42:42.027 回答