91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

發布時間:2022-06-02 14:02:52 來源:億速云 閱讀:488 作者:iii 欄目:開發技術

本篇內容主要講解“vue后臺如何返回格式為二進制流進行文件的下載”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue后臺如何返回格式為二進制流進行文件的下載”吧!

后臺返回格式為二進制流進行文件的下載

結合項目中

封裝get請求攜帶token,進行接收二進制流

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;
}

對應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) //釋放內存
}

即可實現下載二進制流文件。

vue下載保存二進制文件

方法封裝:util.js

/**
 * 把二進制文件保存到本地
 */
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后臺如何返回格式為二進制流進行文件的下載”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

滦平县| 保靖县| 青田县| 乌兰县| 休宁县| 崇仁县| 邵阳县| 东安县| 崇阳县| 吴江市| 宣化县| 湟源县| 赫章县| 上栗县| 五台县| 盐津县| 晋江市| 萨迦县| 梁山县| 宾川县| 赣州市| 云浮市| 富平县| 杭锦后旗| 平武县| 鄂托克旗| 平阴县| 延川县| 阿勒泰市| 咸宁市| 旺苍县| 永昌县| 安福县| 枝江市| 平湖市| 西平县| 齐河县| 南漳县| 南陵县| 社会| 六枝特区|