Saving a Uint8Array to a binary file
These are utilities that I use to download files cross-browser. The nifty thing about this is that you can actually set the download
property of a link to the name you want your filename to be.
FYI the mimeType for binary is application/octet-stream
var downloadBlob, downloadURL;downloadBlob = function(data, fileName, mimeType) { var blob, url; blob = new Blob([data], { type: mimeType }); url = window.URL.createObjectURL(blob); downloadURL(url, fileName); setTimeout(function() { return window.URL.revokeObjectURL(url); }, 1000);};downloadURL = function(data, fileName) { var a; a = document.createElement('a'); a.href = data; a.download = fileName; document.body.appendChild(a); a.style = 'display: none'; a.click(); a.remove();};
Usage:
downloadBlob(myBinaryBlob, 'some-file.bin', 'application/octet-stream');
(shorter) ES6 version of the top answer:
const downloadURL = (data, fileName) => { const a = document.createElement('a') a.href = data a.download = fileName document.body.appendChild(a) a.style.display = 'none' a.click() a.remove()}const downloadBlob = (data, fileName, mimeType) => { const blob = new Blob([data], { type: mimeType }) const url = window.URL.createObjectURL(blob) downloadURL(url, fileName) setTimeout(() => window.URL.revokeObjectURL(url), 1000)}