纯js实现 文件下载与更改名称

 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');
posted @ 2020-01-19 17:39  五兆  阅读(1341)  评论(0编辑  收藏  举报