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

后端返回文件流時(shí),前端如何處理并成功下載流文件以及解決下載后打開(kāi)顯示不支持此文件格式

這篇具有很好參考價(jià)值的文章主要介紹了后端返回文件流時(shí),前端如何處理并成功下載流文件以及解決下載后打開(kāi)顯示不支持此文件格式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、文件和流的關(guān)系

文件(File)和流(Stream)是既有區(qū)別又有聯(lián)系的兩個(gè)概念。

文件 是計(jì)算機(jī)管理數(shù)據(jù)的基本單位,同時(shí)也是應(yīng)用程序保存和讀取數(shù)據(jù)的一個(gè)重要場(chǎng)所。
? ? ? 存儲(chǔ)介質(zhì):文件是指在各種存儲(chǔ)介質(zhì)上(如硬盤、可移動(dòng)磁盤、CD等)永久存儲(chǔ)的數(shù)據(jù)? ? ? ? 的有序集合,它是進(jìn)行數(shù)據(jù)讀寫操作的基本對(duì)象。
? ? ?特性:每個(gè)文件都有文件名、文件所在路徑、創(chuàng)建時(shí)間及訪問(wèn)僅限等屬性。

流 是字節(jié)序列的抽象概念,例如文件、輸入/輸出設(shè)備、內(nèi)部進(jìn)程通信管道等。流提供一種? ? ? ? ?向后備存儲(chǔ)器寫入字節(jié)和從后備存儲(chǔ)器讀取字節(jié)的方式。
? ? 存儲(chǔ)介質(zhì):除了和磁盤文件直接相關(guān)的文件流以外,流還有多種類型。流可以分布在網(wǎng)絡(luò)? ? ? 中、內(nèi)存中或者是磁帶中。

后端返回文件流時(shí),前端如何處理并成功下載流文件以及解決下載后打開(kāi)顯示不支持此文件格式

?上圖類似于亂碼,就是文件流在瀏覽器中的表現(xiàn)形式。

二、前端處理文件流并下載(Vue)

await this.$http
        .request({
          url: `/minioDownload?htitle=${title}`, //這里是你的請(qǐng)求url
          responseType: 'blob', //這里最重要,不要去掉
          method: 'get', //請(qǐng)求方式,看后臺(tái)的需求,可能是get,post等方式
        })
        .then((res) => {
          console.log(res);
          var elink = document.createElement('a');
          elink.download = name;
          elink.style.display = 'none';
          var blob = new Blob([res], { type: 'application/x-msdownload' });
          elink.href = URL.createObjectURL(blob);
          document.body.appendChild(elink);
          elink.click();
          document.body.removeChild(elink);
          this.$message.success(`文件下載成功!`)
        }).catch(err => {
            console.log(err);
        });

設(shè)置Content-Type 的值為:application/x-msdownload。Web 服務(wù)器需要告訴瀏覽器其所輸出的內(nèi)容的類型不是普通的文本文件或 HTML 文件,而是一個(gè)要保存到本地的下載文件

三、解決下載后打開(kāi)顯示不支持此文件格式

這個(gè)問(wèn)題我也遇到了,在網(wǎng)上也搜了好多資料,才得到答案。

比如:

后端返回文件流時(shí),前端如何處理并成功下載流文件以及解決下載后打開(kāi)顯示不支持此文件格式

是因?yàn)樵?axios 中對(duì)后端的響應(yīng)做了攔截,所以new Blob([res])中拿到的res實(shí)際上是后端接口的??res.data,只不過(guò)這一層操作在全局被封裝了。

而如果直接使用的$http.get().then(),并未在全局對(duì)請(qǐng)求進(jìn)行封裝攔截。所以在這里需要取得的是? ?res.data? ? 于是,我把new Blob([res])改成new Blob([res.data])后,問(wèn)題就解決了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-494314.html

到了這里,關(guān)于后端返回文件流時(shí),前端如何處理并成功下載流文件以及解決下載后打開(kāi)顯示不支持此文件格式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包