ページの画像をダウンロードしてディスクの一時ファイルに保存する必要があるGoogleChromeの拡張機能を作成しています。これを行うには、XMLHttpRequestを作成し、それを使用して画像をダウンロードします。コールバック関数で、request.responseに画像がある場合、を使用してWindowsに一時ファイルを要求しますwindow.webkitRequestFileSystem(window.TEMPORARY, 1024 * 1024 * 20, writeImageToFile, errorHandler)
。コールバック関数writeImageToFileで、FileWriterオブジェクトを作成し、それにblobを書き込みます。ファイルは作成されていますが、どこで作成されているのかわかりません。拡張子のファイルのWindowsパスが必要です。助けてください!
質問する
5266 次
1 に答える
1
あなたの目的のために、あなたは仮想ファイルシステムを必要としません。このメソッドを使用してwebkitURL.createObjectURL
、BLOBからURLを作成します。
window.webkitURL.createObjectURL(blob);
Blob
Chrome 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.URL
。MozBlobBuilder
于 2012-05-02T11:26:59.753 に答える