最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決前端接收 type:"application/octet-stream" 格式的數(shù)據(jù)并下載(解決后端返回不唯一問題)

 更新時間:2023年12月21日 11:52:22   作者:飛奔的馬鈴貓  
前端接收 type: “application/octet-stream“ 格式的數(shù)據(jù)并下載,還有后端既返回octet-stream還返回JSON數(shù)據(jù)時的處理方法,今天給大家分享前端接收 type:"application/octet-stream" 格式的數(shù)據(jù)并下載(解決后端返回不唯一問題)的解決方案,感興趣的朋友一起看看吧

前端接收 type: “application/octet-stream“ 格式的數(shù)據(jù)并下載,還有后端既返回octet-stream還返回JSON數(shù)據(jù)時的處理方法

今天些項目的時候,后端改了一下文件下載的方式,打算用接口返回 type: “application/octet-stream“格式的數(shù)據(jù),然后前端來處理下載。今天也是第一次用這種方法,查詢了網(wǎng)上的內(nèi)容總結了一下。

第一步

響應攔截器中作出初步的判斷

這里判斷if是針對這種情況時做出的應對方法,可能還有其他情況,這里只是最簡單的。

service.interceptors.response.use(
 response => {
   // 導出
   const headers = response.headers
   if (headers['content-type'] === 'application/octet-stream;charset=utf-8') {
     return response.data
   }
   ...//這里時其他的情況
 },
 error => {
   return Promise.reject(error)
 }
)

第二步

對api進行修改

這是我的axios的寫法,按各自的走就行

第三步

發(fā)起請求,對請求到的數(shù)據(jù)進行處理下載

   exportClick () {
         export().then(res => {
           const content = res
           const blob = new Blob([content])
           const fileName = '導出信息.xlsx'
           if ('download' in document.createElement('a')) { // 非IE下載
             const elink = document.createElement('a')//創(chuàng)建一個a標簽通過a標簽的點擊事件區(qū)下載文件
             elink.download = fileName
             elink.style.display = 'none'
             elink.href = URL.createObjectURL(blob)//使用blob創(chuàng)建一個指向類型數(shù)組的URL
             document.body.appendChild(elink)
             elink.click()
             URL.revokeObjectURL(elink.href) // 釋放URL 對象
             document.body.removeChild(elink)
           } else { // IE10+下載
             navigator.msSaveBlob(blob, fileName)
           }
         })
       }

本來是已經(jīng)寫完這個功能了,但后臺告訴我有可能沒有文件,然后他要給我返回json數(shù)據(jù)格式

我又懵了一會,又查了半天資料,終于是完善好了

當返回的數(shù)據(jù)類型既有可能是JSON又可能是octet-stream時

第一步

首先我們不能改變原來的代碼

這一行對于接收文件是必須的,但是這樣又會讓我們的數(shù)據(jù)變成blob類型

上面是有文件時的樣子

這是沒有文件的樣子

可以注意到 blob有 type這個數(shù)據(jù),我們就可以根據(jù)這個type來判斷進行下一步處理

if (res.type == "application/json") {
    ...
}
if (res.type == "application/octet-stream"){
    ...
}      

其中是octet-stream類型時的操作我們上面就已經(jīng)寫道了
下面介紹如何轉換為json

第二步:將blob轉換為json數(shù)據(jù)

這里要先用FilerReader,不可以直接使用JSON.parse

         if (res.type == "application/json") {
           // console.log("type == json");
           const reader = new FileReader(); //通過fileReader將blob類型的數(shù)據(jù)轉換成json格式的數(shù)據(jù)
           reader.readAsText(res, "utf-8");
           reader.onload = function () {
             //讀取完成后返回字符串形式的內(nèi)容
             // console.log("reader.result", reader.result);
             const msg = JSON.parse(reader.result);
             console.log("JSON轉換結果", msg);
			  //...這里時對轉換后結果的操作
             }
           };
         }

到這里下載文件的種種問題就解決啦,寫個博客紀念一下,第一次處理這種問題

轉載說明:

借鑒原作者:https://blog.csdn.net/u010598111/article/details/85052865

到此這篇關于前端接收 type: “application/octet-stream“ 格式的數(shù)據(jù)并下載,解決后端返回不唯一的文章就介紹到這了,更多相關接收application/octet-stream格式的數(shù)據(jù)并下載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript獲取當前日期是星期幾的方法

    JavaScript獲取當前日期是星期幾的方法

    這篇文章主要介紹了JavaScript獲取當前日期是星期幾的方法,涉及javascript中getDay函數(shù)獲取日期的技巧,需要的朋友可以參考下
    2015-04-04
  • JavaScript中的location、history、navigator對象實例介紹

    JavaScript中的location、history、navigator對象實例介紹

    這篇文章主要介紹了JavaScript中的location、history、navigator對象實例介紹,需要的朋友可以參考下
    2023-05-05
  • JavaScript原型對象、構造函數(shù)和實例對象功能與用法詳解

    JavaScript原型對象、構造函數(shù)和實例對象功能與用法詳解

    這篇文章主要介紹了JavaScript原型對象、構造函數(shù)和實例對象功能與用法,結合實例形式分析了javascript面向對象相關原型對象、構造函數(shù)及實例對象的概念、功能與相關使用技巧,需要的朋友可以參考下
    2018-08-08
  • JavaScript迭代器的含義及用法

    JavaScript迭代器的含義及用法

    這篇文章主要介紹了JavaScript迭代器的含義及用法,迭代器就是為實現(xiàn)對不同集合進行統(tǒng)一遍歷操作的一種機制,只要給需要遍歷的數(shù)據(jù)結構部署Iterator接口,通過調用該接口,或者使用消耗該接口的API實現(xiàn)遍歷操作。,需要的朋友可以參考下
    2019-06-06
  • js面向對象的寫法

    js面向對象的寫法

    這篇文章主要介紹了四種js面向對象的常見寫法,還介紹了有關this的相關內(nèi)容,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JavaScript常用8種數(shù)組去重代碼實例

    JavaScript常用8種數(shù)組去重代碼實例

    這篇文章主要介紹了JavaScript常用8種數(shù)組去重代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • javascript實現(xiàn)簡單的貪吃蛇游戲

    javascript實現(xiàn)簡單的貪吃蛇游戲

    本文很簡單,給大家分享了一段使用javascript實現(xiàn)簡單的貪吃蛇游戲的代碼,算是對自己學習javascript的一次小小的總結,代碼參考了網(wǎng)友的部分內(nèi)容,推薦給大家,希望對大家能夠有所幫助。
    2015-03-03
  • JavaScript遍歷數(shù)組的方法代碼實例

    JavaScript遍歷數(shù)組的方法代碼實例

    這篇文章主要介紹了JavaScript遍歷數(shù)組的方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • HTML5游戲引擎LTweenLite實現(xiàn)的超帥動畫效果(附demo源碼下載)

    HTML5游戲引擎LTweenLite實現(xiàn)的超帥動畫效果(附demo源碼下載)

    這篇文章主要介紹了HTML5游戲引擎LTweenLite實現(xiàn)的超帥動畫效果,詳細分析了LTweenLite的下載,動畫效果的實現(xiàn)步驟,并附帶完整的demo實例源碼供讀者下載,需要的朋友可以參考下
    2016-01-01
  • javascript實現(xiàn)了照片拖拽點擊置頂?shù)恼掌瑝Υa

    javascript實現(xiàn)了照片拖拽點擊置頂?shù)恼掌瑝Υa

    這篇文章主要介紹了javascript實現(xiàn)了照片拖拽點擊置頂?shù)恼掌瑝Υa,效果非常不錯,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-04-04

最新評論

峨眉山市| 简阳市| 安徽省| 双辽市| 仙游县| 普定县| 乌兰县| 平利县| 巩义市| 白朗县| 涟源市| 沁源县| 佳木斯市| 枣庄市| 会同县| 邵武市| 太白县| 温宿县| 东台市| 牟定县| 延安市| 荥阳市| 黔南| 蓝田县| 墨竹工卡县| 湘乡市| 安丘市| 桐柏县| 高清| 渭源县| 武威市| 浦县| 永胜县| 石阡县| 临安市| 尖扎县| 屏东县| 敦煌市| 遂溪县| 佛冈县| 化州市|