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