Save data from browser to a file

by KimNyholm

HTML

<button onClick="saveSomeData()">
Click to save some data
</button>

JavaScript

function saveFile(blob, filename) {
  if (window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(blob, filename);
  } else {
    const a = document.createElement('a');
    document.body.appendChild(a);
    const url = window.URL.createObjectURL(blob);
    a.href = url;
    a.download = filename;
    a.click();
    setTimeout(() => {
      window.URL.revokeObjectURL(url);
      document.body.removeChild(a);
    }, 0)
  }
}

function saveSomeData() {
  const obj = {
    hello: 'world'
  };
  const blob = new Blob([JSON.stringify(obj, null, 2)], {
    type: 'application/json'
  });
  saveFile(blob, "datafile.json")
}