乐趣区

关于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>
退出移动版