I want to generate a CSV file as the result of some user interactions and then prompt the user to download it. How can I do that?
I don't think it's possible in straight JS, but perhaps Chrome gives me some elevated privileges?
You can now use HTML5 File API to download a file. It is still in development, but you can use a BlobBuilder and redirect your use to download that file:
var bb = new BlobBuilder();
bb.append(csvContents);
var blob = bb.getBlob();
location.href = window.webkitURL.createObjectURL(blob);
For more information regarding the File API, HTML5Rocks has a great tutorial:
http://www.html5rocks.com/tutorials/file/filesystem/
I needed to do exactly the same recently - generating file and enforcing its download in Chrome extension. Here you are a code snippet doing that, using ES6 and the recommended methods:
let docContent = ... /* your content */;
let doc = URL.createObjectURL( new Blob([docContent], {type: 'application/octet-binary'}) );
chrome.downloads.download({ url: doc, filename: filename, conflictAction: 'overwrite', saveAs: true });
You also have to declare a proper privilege in manifest.json
:
"permissions" : ["downloads"]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With