Saving a Uint8Array to a binary file Saving a Uint8Array to a binary file javascript javascript

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