1 /** 2 * 获取 blob 3 * {String} url 目标文件地址 4 * {cb} 下载完的保存回调 5 */ 6 function getBlob(url, cb) { 7 var xhr = new XMLHttpRequest(); 8 xhr.open('GET', url, true); 9 xhr.responseType = 'blob'; 10 xhr.onload = function () { 11 if (xhr.status === 200) { 12 cb(xhr.response); 13 } 14 }; 15 xhr.send(); 16 } 17 18 /** 19 * 保存 20 * {Blob} blob 21 * {String} filename 想要保存的文件名称 22 */ 23 function saveAs(blob, filename) { 24 if (window.navigator.msSaveOrOpenBlob) { 25 navigator.msSaveBlob(blob, filename); 26 } else { 27 var link = document.createElement('a'); 28 var body = document.querySelector('body'); 29 30 link.href = window.URL.createObjectURL(blob); 31 link.download = filename; 32 33 // fix Firefox 34 link.style.display = 'none'; 35 body.appendChild(link); 36 37 link.click(); 38 body.removeChild(link); 39 40 window.URL.revokeObjectURL(link.href); 41 }; 42 } 43 44 /** 45 * 下载 46 * {String} url 目标文件地址 47 * {String} filename 想要保存的文件名称 48 */ 49 function download(url, filename) { 50 getBlob(url, function (blob) { 51 saveAs(blob, filename); 52 }); 53 };
使用:
download(url,'test.txt');