关于javascript:vue中a标签跨域下载文件非图片文件适用解决办法

一、a标签download属性(同源写法)

<a :href="xxxx.xls" download="模板文件">模板下载</a>

这样的写法只存在同源状况下,非同源跨域状况下图片与pdf文件(只有浏览器反对)都会间接关上。

试过跨域申请写法,参考链接:https://www.cnblogs.com/makal…

//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();
},

这样写法控制台还是会报跨域问题。

二、解决办法(间接删除a标签里的download属性)

//间接删除a标签里的download属性(非图片文件实用)。
//tempUrl为传过来的url,依据需要自行配置。

<a :href="tempUrl" target="_blank">模板下载</a>

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理