簡體   English   中英

如何在Safari中使用JavaScript保存大型(8MB)文件?

[英]How can I save a large (8MB) file using JavaScript in Safari?

我正在尋找一種在Safari中保存大文件(正好是8兆字節)的方法。 我嘗試過使用URI方案以及eligreyFileSaver和flash插件Downloadify。 所有這些都導致Safari分配內存,直到Web工作進程達到大約2千兆字節,然后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,我寧願不采取這種方式。

干得好。 首先將文件存儲在HTML5文件系統中,並在完成數據存儲后使用filesaver api進行下載。 我一直在研究它,並且在阻止UI和瀏覽器崩潰的情況下取得了不錯的成績。 最好在網絡工作者中做到這一點,以獲得應用程序的性能。

這是有用的文章。

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

不幸的是,Safari7似乎不支持編寫文件。

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

http://caniuse.com/#feat=filesystem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM