使用axios獲取並下載文件


/**
 * 導出文件方法
 * @param {String} method [請求方式]
 * @param {String} url [請求的url地址]
 * @param {Object} params [請求時攜帶的參數]
 * @param {String} fileName [導出的文件名,例:test.xlsx]
 */
function DOWNLOAD(method="post",url, params, fileName) {
    return new Promise((resolve, reject) => {
        axios({
            method: method,
            url: url,
            params: params,
            responseType: 'blob'
        })
        .then(res => {
            let reader = new FileReader();
            let data = res.data;
            reader.onload = e => {
                if (e.target.result.indexOf('Result') != -1 && JSON.parse(e.target.result).Result == false) {
                    // 進行錯誤處理
                } else {
                    if (!fileName) {
                        let contentDisposition = res.headers['content-disposition'];
                        if (contentDisposition) {
                            fileName = window.decodeURI(res.headers['content-disposition'].split('=')[2].split("''")[1], "UTF-8");
                        }
                    }
                    executeDownload(data, fileName);
                }
            };
            reader.readAsText(data);
            resolve(res.data);
        })
    });
}
//  模擬點擊a 標簽進行下載
function executeDownload(data, fileName) {
    if (!data) {
        return
    }
    let url = window.URL.createObjectURL(new Blob([data]));
    let link = document.createElement('a');
    link.style.display = 'none';
    link.href = url;
    link.setAttribute('download', fileName);
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

 


免責聲明!

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



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