下載文件時遇到跨域下載文件 ,a標簽的 download 無法實現跨域問題,耗時一天半終於解決,做個筆記記錄下。
html或jsp頁面:
<button onclick="downFile()">下載</button> -- 注意 此處button 只是一個觸發下載文件的時機,可根據具體業務需求修改
js代碼:
//下載文件
function downFile(){
var url="需要下載文件的url路徑";
var xhr=new XMLHttpRequest();
xhr.open("GET",url,true);
xhr.responseType='blob';
xhr.onload=function(e){
if (xhr.status === 200) {
var fileName=getFileName(url);//獲取文件名
saveFile(xhr.response,fileName);
}
}
}
//保存文件
function saveFile(data,fileName){
var export_blob=new Blob([data]);
var save_link=document.createElement('a');
document.body.appendChild(save_link);
save_link.style.display='none';
var urlObject=window.URL.createObjectURL(export_blob);
save_link.href=urlObject;
save_link.download=fileName;
save_link.click();
document.body.removeChild(save_link);
}
//根據url獲取文件名
function getFileName(url){
var num=url.lastIndexOf("/")+1;
var fileName=url.substring(num);
fileName=decodeURI(fileName.split("?")[0]);
return fileName;
}
