vue后臺返回格式為二進(jìn)制流進(jìn)行文件的下載方式
后臺返回格式為二進(jìn)制流進(jìn)行文件的下載
結(jié)合項(xiàng)目中
封裝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)制流文件。
vue下載保存二進(jìn)制文件
方法封裝:util.js
/**
?* 把二進(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,
? });
}方法調(diào)用
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);
? ? }
})以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
從零開始用webpack構(gòu)建一個(gè)vue3.0項(xiàng)目工程的實(shí)現(xiàn)
這篇文章主要介紹了從零開始用webpack構(gòu)建一個(gè)vue3.0項(xiàng)目工程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
vue watch監(jiān)聽對象及對應(yīng)值的變化詳解
下面小編就為大家分享一篇vue watch監(jiān)聽對象及對應(yīng)值的變化詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
Ubuntu22.04使用nginx部署vue前端項(xiàng)目的詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于Ubuntu22.04使用nginx部署vue前端項(xiàng)目的詳細(xì)教程,使用nginx部署前端項(xiàng)目是一篇非常詳細(xì)的教程,旨在幫助初學(xué)者使用Nginx來部署前端項(xiàng)目,需要的朋友可以參考下2024-03-03
Vue3項(xiàng)目中使用防抖節(jié)流的實(shí)現(xiàn)示例
防抖節(jié)流是可以說是一種優(yōu)化組件性能的技巧,可以有效減少組件中的渲染次數(shù)和計(jì)算量,本文主要介紹了Vue3項(xiàng)目中使用防抖節(jié)流的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-04-04
Vue + iView實(shí)現(xiàn)Excel上傳功能的完整代碼
前一段時(shí)間項(xiàng)目經(jīng)歷了前端上傳文件的過程,首先進(jìn)入頁面會展示默認(rèn)的樣子,選中要上傳的excel文件,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06
vue滾動(dòng)固定頂部及修改樣式的實(shí)例代碼
這篇文章主要介紹了vue滾動(dòng)固定頂部及修改樣式,本文給大家提到了滾動(dòng)固定位置有多種方法,感興趣的朋友跟隨小編一起看看吧2019-05-05

