0

ページの画像をダウンロードしてディスクの一時ファイルに保存する必要があるGoogleChromeの拡張機能を作成しています。これを行うには、XMLHttpRequestを作成し、それを使用して画像をダウンロードします。コールバック関数で、request.responseに画像がある場合、を使用してWindowsに一時ファイルを要求しますwindow.webkitRequestFileSystem(window.TEMPORARY, 1024 * 1024 * 20, writeImageToFile, errorHandler)。コールバック関数writeImageToFileで、FileWriterオブジェクトを作成し、それにblobを書き込みます。ファイルは作成されていますが、どこで作成されているのかわかりません。拡張子のファイルのWindowsパスが必要です。助けてください!

4

1 に答える 1

1

あなたの目的のために、あなたは仮想ファイルシステムを必要としません。このメソッドを使用してwebkitURL.createObjectURL、BLOBからURLを作成します。

window.webkitURL.createObjectURL(blob);

BlobChrome 19以降、次を使用してオブジェクトを直接取得できますresponseType

var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function() {
    // xhr.response is a Blob
    var url = webkitURL.createObjectURL(xhr.response);
    console.log('URL: ', url);
};
xhr.open('GET', 'http://example.com/favicon.ico');
xhr.send();

Chrome 10以降、ArrayBuffer応答を取得してBLOBに変換できます(デモ)。

var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.onload = function() {
    // Create blob from arraybuffer
    var bb = new (window.BlobBuilder || window.WebKitBlobBuilder)();
    bb.append(xhr.response);
    var url = webkitURL.createObjectURL(bb.getBlob());
    console.log('URL: ', url);
};
xhr.open('GET', 'http://example.com/favicon.ico');
xhr.send();

(Firefoxで同じコードを使用する場合は、を使用します) window.URLMozBlobBuilder

于 2012-05-02T11:26:59.753 に答える