国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解決axios請求文件流前端通過new Blob完成文件流下載文件打不開

這篇具有很好參考價(jià)值的文章主要介紹了解決axios請求文件流前端通過new Blob完成文件流下載文件打不開。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1.首先請求封裝axios的請求方式

2.根據(jù)接口文檔查看文件流的請求類型

3.請求Methods

4.以上寫完以后,好消息是文件可以成功下載

4.1壞消息是文件竟然是個(gè)損壞文件打不開,修復(fù)了也是亂碼

5.解決問題

5.1 前端做文件下載有很多方式,前端返回文件流需要我們在axios請求封裝新增一個(gè)文件下載請求,專門處理Blob文件流的請求,其中?responseType:"blob" 類型必須寫


1.首先請求封裝axios的請求方式

const service = axios.create({
  baseURL:"" ,
  timeout: 5000
})

export const http ={
  get<T>(url: string, params: any):Promise<T> {
    return request({
      url,
      method: 'get',
      params
    })
  },
  postJson<T>(url: string, data: any):Promise<T> {
    return request({
      url,
      method: 'post',
      headers: { 'Content-Type': 'application/json' },
      data
    })
  }
}

2.根據(jù)接口文檔查看文件流的請求類型

這邊兩種請求方式都有,以下按照post為例子

new blob([responsedata]);文件打不開,前端開發(fā)常見bug,前端,vue.js,ajax,excel

請求api模塊??"@/api/download"

new blob([responsedata]);文件打不開,前端開發(fā)常見bug,前端,vue.js,ajax,excel

3.請求Methods

import { postDownload } from "@/api/download"
// 導(dǎo)出事件
const ExportMethods = () => {
    // 1.ts類型規(guī)范返回的結(jié)果為Blob類型
    const res: Blob = await postDownload()  
    // 2.文件流存在,創(chuàng)建下載路徑觸發(fā)下載
    if (res) { 
      const blob = new Blob([res], { type: 'application/vnd.ms-excel; charset=utf-8' })
      const link = document.createElement('a')
      link.href = URL.createObjectURL(blob)
      link.download ='Excel.xlsx'
      link.click()
      // 3.一定要釋放URL對象
      URL.revokeObjectURL(link.href)
    }
  })
}

4.以上寫完以后,好消息是文件可以成功下載

new blob([responsedata]);文件打不開,前端開發(fā)常見bug,前端,vue.js,ajax,excel

4.1壞消息是文件竟然是個(gè)損壞文件打不開,修復(fù)了也是亂碼

new blob([responsedata]);文件打不開,前端開發(fā)常見bug,前端,vue.js,ajax,excel

5.解決問題

5.1 前端做文件下載有很多方式,前端返回文件流需要我們在axios請求封裝新增一個(gè)文件下載請求,專門處理Blob文件流的請求,其中?responseType:"blob" 類型必須寫

const http ={
  // 導(dǎo)出blob文件流
  downloadBlobFile<T>(url: string, data: any):Promise<T> {
    return request({
      url,
      method: 'post',
      data,
      responseType: 'blob'  // 此類型必須標(biāo)注,否則下載的文件就是損壞的
    })
  }
}

修改api的請求函數(shù)

new blob([responsedata]);文件打不開,前端開發(fā)常見bug,前端,vue.js,ajax,excel

組件中使用方法不變,再次導(dǎo)出發(fā)現(xiàn)解決問題

new blob([responsedata]);文件打不開,前端開發(fā)常見bug,前端,vue.js,ajax,excel

new blob([responsedata]);文件打不開,前端開發(fā)常見bug,前端,vue.js,ajax,excel

對你有幫助的話,點(diǎn)個(gè)贊唄文章來源地址http://www.zghlxwxcb.cn/news/detail-857355.html

到了這里,關(guān)于解決axios請求文件流前端通過new Blob完成文件流下載文件打不開的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue 后端返回二進(jìn)制流-前端通過blob對象下載文件-圖片

    前言 在實(shí)際開發(fā)中我們經(jīng)常會遇見下載文件的場景,比如下載合同,下載文件 下載文件有2種方式,一種是后端返回二進(jìn)制流,前端通過blob對象接受根據(jù)不同類型下載 還有一種把地址直接在瀏覽器新窗口打開瀏覽器打開pdf可以預(yù)覽和下載,其他文件直接下載 但不管是那種方

    2024年02月05日
    瀏覽(25)
  • axios請求設(shè)置responseType為‘blob‘或‘a(chǎn)rraybuffer‘下載時(shí),正確處理返回值

    問題:調(diào)用后臺圖片接口,后臺返回二進(jìn)制流圖片數(shù)據(jù)格式。前端接收到流后處理數(shù)據(jù)顯示在img標(biāo)簽。 解決: 1、設(shè)置axios接收參數(shù)格式為\\\"arraybuffer\\\": 2、轉(zhuǎn)換為base64格式圖片數(shù)據(jù)在img標(biāo)簽顯示: 返回的string直接放在img標(biāo)簽src可直接顯示 二、設(shè)置axios接收參數(shù)格式為\\\"blob\\\":

    2023年04月09日
    瀏覽(19)
  • react通過axios發(fā)送請求并演示配置多個(gè)反向代理地址解決跨域

    react通過axios發(fā)送請求并演示配置多個(gè)反向代理地址解決跨域

    這里 我們準(zhǔn)備一個(gè)接口 我這里用java寫了一個(gè) 然后 我們打開react項(xiàng)目 安裝axios 然后在src下創(chuàng)建一個(gè)setupProxy.js 編寫代碼如下 可以看到 這里我們配了兩個(gè)方向代理 如果請求的路中 包含api 就會代理成 http://localhost:8080/請求路徑 如果包含user則會成為 http://localhost:808/請求路徑 這

    2023年04月10日
    瀏覽(28)
  • Vue 之 new Blob() 文件流下載文件不同文件類型的 type 值整理

    在 Vue 項(xiàng)目中,經(jīng)常用 Blob 二進(jìn)制進(jìn)行文件下載功能(vue后臺返回文件流下載導(dǎo)出函數(shù)封裝、調(diào)用示例),涉及不同后綴名的文件,這里整理一份 Blob 的配置關(guān)系對應(yīng)表,在我們使用Blob做下載功能時(shí) ,根據(jù)需要下載的文件類型修改 type 值進(jìn)行下載即可。 后綴名 文件類型 類型

    2024年02月02日
    瀏覽(40)
  • 后端返回文件流,前端用blob轉(zhuǎn)換后,下載的文件亂碼或者打不開怎么解決

    1、確認(rèn)接口有沒有設(shè)置 responseType: “blob” 2、使用blob轉(zhuǎn)換,res 是 后端返回的文件流 3、如果文件還是打不開,提示文件格式不對……,那就看看項(xiàng)目中有沒有引用 mockJs ,有的話注釋掉就可以啦

    2024年02月16日
    瀏覽(97)
  • vue2前端使用axios發(fā)起post請求,后端(springboot)拿不到值解決辦法

    vue2前端使用axios發(fā)起post請求,后端(springboot)拿不到值解決辦法

    axios封裝-我常用的請求頭參數(shù)? application/json; charset=utf-8 頁面登錄請求-post 網(wǎng)絡(luò)請求正常傳入?yún)?shù) 后端代碼,查看控制臺發(fā)現(xiàn)都為null,沒取到值。 1.嘗試將前端post請求改成get,其他都不用變 發(fā)現(xiàn)正常取到值,打印輸出正常。前端頁面正常跳轉(zhuǎn)。 2.后端設(shè)置為post請求,前端a

    2024年02月02日
    瀏覽(22)
  • 前端異步請求并解決跨域問題(Ajax+axios框架)、后端響應(yīng)多個(gè)數(shù)據(jù)(JSON)

    前端異步請求并解決跨域問題(Ajax+axios框架)、后端響應(yīng)多個(gè)數(shù)據(jù)(JSON)

    目錄 一、前后端同步異步請求 1.同步請求: 2.異步請求: 3.跨域問題(前端問題) 4.axios框架(封裝后) 二、后端向前端響應(yīng)多個(gè)數(shù)據(jù)-JSON 1.同步請求: ? ? ? ? 發(fā)送一個(gè)請求,回應(yīng)請求,回應(yīng)的內(nèi)容會覆蓋瀏覽器中的內(nèi)容,這樣會 打斷 前端其他的正常操作。 2.異步請求:

    2024年02月07日
    瀏覽(32)
  • vue axios實(shí)現(xiàn)下載文件及responseType:blob注意事項(xiàng)

    需要使用axios和js-file-download組件 注意事項(xiàng): responseType:blob表示服務(wù)器返回的響應(yīng)類型是二進(jìn)制流,一般用于文件、視頻下載等場景。正常情況下后端返回二進(jìn)制數(shù)據(jù),當(dāng)后端服務(wù)器出錯(cuò)時(shí),往往會以json形式返回錯(cuò)誤信息,例如{\\\"code\\\":500,\\\"msg\\\":\\\"未知異常\\\"}。因?yàn)樵O(shè)置了blob類型,

    2024年02月11日
    瀏覽(25)
  • ElementUI之登陸+注冊->餓了嗎完成用戶登錄界面搭建,axios之get請求,axios之post請求,跨域,注冊界面

    ElementUI之登陸+注冊->餓了嗎完成用戶登錄界面搭建,axios之get請求,axios之post請求,跨域,注冊界面

    ?餓了嗎完成用戶注冊登錄界面搭建 axios之get請求 axios之post請求 跨域 注冊界面 1.餓了嗎完成用戶注冊登錄界面搭建 將端口號8080改為8081 導(dǎo)入依賴,在項(xiàng)目根目錄使用命令npm install element-ui -S,添加Element-UI模塊 -g:將依賴下載node_glodal全局依賴 -d(依賴放在static/[]package.json的

    2024年02月04日
    瀏覽(29)
  • 前端向Java后端請求blob、arraybuffer類型的數(shù)據(jù)流

    前端需要獲取后端音頻文件,但遇到跨域問題,不能直接使用url獲取,需求必須使用流將文件傳到前端。因此,考慮Java后端讀取音頻文件,然后向前端發(fā)送數(shù)據(jù)流,前端按后端發(fā)送類型將數(shù)據(jù)接收,并合成其格式文件。 引入axios.min.js文件 其中,responseType:‘a(chǎn)rraybuffer’,寫成

    2024年02月13日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包