下載文件時遇到跨域下載文件 ,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; }