js跨域下載文件


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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM