溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue后臺如何返回格式為二進(jìn)制流進(jìn)行文件的下載

發(fā)布時間:2022-06-02 14:02:52 來源:億速云 閱讀:469 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“vue后臺如何返回格式為二進(jìn)制流進(jìn)行文件的下載”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“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);
    }
})

到此,相信大家對“vue后臺如何返回格式為二進(jìn)制流進(jìn)行文件的下載”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(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)容。

vue
AI