Javascript 从Blob URL创建下载链接
在我正在使用的Google chrome扩展中,一个文件是从服务器上下载的,带有Javascript 从Blob URL创建下载链接,javascript,html,google-chrome-extension,Javascript,Html,Google Chrome Extension,在我正在使用的Google chrome扩展中,一个文件是从服务器上下载的,带有XMLHttpRequest。此文件包含一些二进制数据,这些数据存储在ArrayBuffer对象中。为了提供下载此文件的可能性,我正在使用createObjectURLAPI function publish(data) { if (!window.BlobBuilder && window.WebKitBlobBuilder) { window.BlobBuilder = window.
XMLHttpRequest
。此文件包含一些二进制数据,这些数据存储在ArrayBuffer
对象中。为了提供下载此文件的可能性,我正在使用createObjectURL
API
function publish(data) {
if (!window.BlobBuilder && window.WebKitBlobBuilder) {
window.BlobBuilder = window.WebKitBlobBuilder;
}
var builder = new BlobBuilder();
builder.append(data);
var blob = builder.getBlob();
var url = window.webkitURL.createObjectURL(blob);
$("#output").append($("<a/>").attr({href: url}).append("Download"));
函数发布(数据){
if(!window.BlobBuilder&&window.WebKitBlobBuilder){
window.BlobBuilder=window.WebKitBlobBuilder;
}
var builder=new BlobBuilder();
附加(数据);
var blob=builder.getBlob();
var url=window.webkitURL.createObjectURL(blob);
$(“#输出”).append($(“”).attr({href:url}).append(“下载”);
}
它运转良好;除了文件名是不透明的UUID,如
9a8f6a0f-dd0c-4715-85dc-7379db9ce142
。有没有办法强制将此文件名设置为更加用户友好的格式?我以前从未尝试过,但应该可以创建一个新的文件对象(允许您指定文件名)并将blob写入其中。大致如下:
function publish(data, filename) {
if (!window.BlobBuilder && window.WebKitBlobBuilder) {
window.BlobBuilder = window.WebKitBlobBuilder;
}
fs.root.getFile(filename, {
create: true
}, function (fileEntry) {
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function (e) {
console.log('Write completed.');
};
fileWriter.onerror = function (e) {
console.log('Write failed: ' + e.toString());
};
var builder = new BlobBuilder();
builder.append(data);
var blob = builder.getBlob();
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}
我认为这对你来说是可行的。你可以通过设置锚的“下载”属性强制使用任意文件名
请参阅:谢谢,我们的解决方案有效。实际上我已经看过这个API了,但是FileEntry接口的toURL()方法似乎不起作用。在谷歌搜索之后,我发现这个方法在Chrome.BlobBuilder上被重命名为toURI(),已经过时了。使用Blob构造函数。