Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
110
rated 0 times [  116] [ 6]  / answers: 1 / hits: 34641  / 13 Years ago, fri, may 20, 2011, 12:00:00

In a Google chrome extension I am working on, a file is downloaded from a server with an XMLHttpRequest. This file contains some binary data which are stored in an ArrayBuffer object. In order to provide the possibility to download this file I am using the 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));


}



It is working fine; except that the filename is an opaque UUID like 9a8f6a0f-dd0c-4715-85dc-7379db9ce142. Is there any way to force this filename to something more user-friendly?


More From » html

 Answers
15

I have never tried it before, but it should be possible to create a new File object (which allows you to specify a file name) and write your blob to it. Something along the lines of:



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);
}


I think this could work for you.


[#92134] Thursday, May 19, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
tyemathewj

Total Points: 484
Total Questions: 107
Total Answers: 111

Location: Equatorial Guinea
Member since Sun, Feb 14, 2021
3 Years ago
;