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');
来源:https://www.cnblogs.com/5MBPerSec/p/12214968.html