3

Safariで大きなファイル(正確に8メガバイト)を保存する方法を探しています。eligreyFileSaverとフラッシュプラグインDownloadifyの両方でURIスキームを使用してみました。これらすべてにより、Webワーカープロセスが約2ギガバイトに達するまでSafariがメモリを割り当て、その後Safariがクラッシュします。

私は以前にこのような質問があることに気づきましたが、私はそれらの質問がもたらしたすべてを試しました。リンク:

このコードはFirefoxとGoogleChromeで機能します(saveAsにeligreyFileSaverライブラリを使用します)。

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がクラッシュせずにダウンロードを作成する方法を探しています。展開領域はMacOSXであるため、各マシンにはPHPとともにapacheが組み込まれていますが、私はそのルートを採用したくありません。

4

2 に答える 2

1

どうぞ。まず、ファイルをHTML5ファイルシステムに保存し、データの保存が完了したら、filesaverapiを使用してダウンロードします。私はそれに取り組み、UIをブロックしたりブラウザをクラッシュさせたりすることなく良い結果を得ました。アプリのパフォーマンスを得るには、Webワーカーで行う方がよいでしょう。

ここに役立つ記事があります。

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=filesystem

于 2014-07-25T17:42:42.027 に答える