我正在为 Google Chrome 编写扩展程序,我需要在其中下载页面图像并将它们保存在磁盘上的临时文件中。为此,我创建了一个 XMLHttpRequest 并使用它来下载图像。在回调函数中,当我在 request.response 中有图像时,我使用window.webkitRequestFileSystem(window.TEMPORARY, 1024 * 1024 * 20, writeImageToFile, errorHandler)
. 在回调函数 writeImageToFile 中,我创建了 FileWriter 对象并将 blob 写入其中。该文件正在创建,但我无法找到它的创建位置。我需要扩展文件的 Windows 路径。请帮忙!
问问题
5266 次
1 回答
1
出于您的目的,您不需要虚拟文件系统。使用该webkitURL.createObjectURL
方法从 blob 创建 URL:
window.webkitURL.createObjectURL(blob);
从 Chrome 19 开始,您可以使用以下方法直接获取Blob
对象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 回答