您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“vue后臺如何返回格式為二進(jìn)制流進(jìn)行文件的下載”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“vue后臺如何返回格式為二進(jìn)制流進(jìn)行文件的下載”吧!
封裝get請求攜帶token,進(jìn)行接收二進(jìn)制流
export function getHeader() { const token = getToken(); if (token) { return { headers: { "Authorization": "Bearer " + token, } } } return { headers: {} } } export function getHeader() { const token = getToken(); if (token) { return { headers: { "Authorization": "Bearer " + token, } } } return { headers: {} } }
TaskManageServer.js文件:
export const dataExport2 = (vueObject, dataIdList) => getDataRaw(vueObject,dataExport1(dataIdList)) export const dataExport1 = (dataIdList)=> { var tmp =""; for (let i = 0; i <dataIdList.length; i++) { tmp+= dataIdList[i]+"," } tmp = tmp.substr(0,tmp.length-1) var url = getUrl('image/export/' + tmp); return url; }
對應(yīng)html文件具體使用:
import { dataExport1, dataExport2 } from './TaskManageServer' const response = await dataExport2(this, this.dataIdList); let blob = new Blob([response.data], { //下載的文件類型; type: 'application/zip' }) // let fileName = Date.parse(new Date()) + '.zip'(修改下載的文件名) if (window.navigator.msSaveOrOpenBlob) { // navigator.msSaveBlob(blob, fileName) navigator.msSaveBlob(blob) } else { var link = document.createElement('a') link.href = window.URL.createObjectURL(blob) // link.download = fileName link.click() window.URL.revokeObjectURL(link.href) //釋放內(nèi)存 }
即可實(shí)現(xiàn)下載二進(jìn)制流文件。
/** * 把二進(jìn)制文件保存到本地 */ export function exportFile(file, name) { let url = window.URL.createObjectURL(new Blob([file])); let link = document.createElement("a"); link.style.display = "none"; link.href = url; link.setAttribute("download", name); document.body.appendChild(link); link.click(); document.body.removeChild(link); // 下載完成移除元素 window.URL.revokeObjectURL(url); // 釋放掉blob對象 }
在請求頭加responseType: "arraybuffer"
export function demoApi(data) { return http({ url: "/path/export", method: "post", responseType: "arraybuffer", data, }); }
demoApi(data).then(res=>{ if(res.staus==200){ let fileName = ""; let contentDisposition = res.headers["content-disposition"]; if (contentDisposition) { fileName = window.decodeURI( res.headers["content-disposition"].split("=")[1], "UTF-8" );//取文件名 } exportFile(res.data, fileName); } })
到此,相信大家對“vue后臺如何返回格式為二進(jìn)制流進(jìn)行文件的下載”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。