a标签跨域下载文件,解决download失效问题

a标签中download属性可以更改下载文件的文件名。但是如果是跨域的话,download属性就会失效。
解决方案:

//onclick 事件
<a @click="downloadFile(fileUrl,fileName)">下载文件</a>

downloadFile(url, fileName) {
    var x = new XMLHttpRequest();
    x.open("GET", url, true);
    x.responseType = 'blob';
    x.onload=function(e) {
        //会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。
        var url = window.URL.createObjectURL(x.response)
        var a = document.createElement('a');
        a.href = url
        a.download = fileName;
        a.click()
    }
    x.send();
},

参考:https://www.jianshu.com/p/8e5f4740322d

posted @ 2020-08-28 18:39  makalo  阅读(12813)  评论(4编辑  收藏  举报