Satu-satunya cara yang saya ketahui adalah trik yang digunakan oleh FileSaver.js :
- Buat
<a>
tag tersembunyi .
- Atur
href
atributnya ke URL blob.
- Setel
download
atributnya ke nama file.
- Klik pada
<a>
tag.
Berikut adalah contoh sederhana ( jsfiddle ):
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var data = { x: 42, s: "hello, world", d: new Date() },
fileName = "my-download.json";
saveData(data, fileName);
Saya menulis contoh ini hanya untuk mengilustrasikan ide, dalam kode produksi menggunakan FileSaver.js sebagai gantinya.
Catatan
- Browser lama tidak mendukung atribut "unduh", karena itu bagian dari HTML5.
- Beberapa format file dianggap tidak aman oleh browser dan unduhan gagal. Menyimpan file JSON dengan ekstensi txt berfungsi untuk saya.