情况:公司特别钟爱,导出,下载,批量下载,打印,批量打印,今天遇到下载mp3文件时,只是在线打开,并不下载。因为同源的文件,浏览器默认是打开预览,不同源的才下载。利用get请求转成文件流就可以了。
解决方法:
//解决本身就是在线图片,或者文档的下载(同源也能下载)
downRow(index,data){
let that = this
let oReq = new XMLHttpRequest();
oReq.open("GET", 'http://xxxxx.com/666.mp3', true);
oReq.responseType = "blob";
//oReq.withCredentials = true;//如果跨域
oReq.onload = function (oEvent) {
let content = oReq.response;
let elink = document.createElement('a');
elink.download = '666.mp3';
elink.style.display = 'none';
let blob = new Blob([content])
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
};
oReq.send();
},
//解决文件流下载,不管同不同源只要是文件流就能下载,对于非文件流结果是在线打开预览
//window.open('xxx') //csv,xlsx能下载,pdf,txt,img会打开