文件下載

blob和fileReader如何使用,是什么關(guān)系

直接給文件地址會(huì)有安全隱患嗎?一般是如何處理文件地址的。

前端下載的幾種方式,總結(jié)一下就是,如果返回的文件格式瀏覽器不能識別,瀏覽器就會(huì)下載。如果后端處理了響應(yīng)頭Content-Disposition: attachment; filename="filename.xls" ,那也可以下載。

但是還有一種情況,瀏覽器可以識別的文件格式,后端也沒有設(shè)置下載的響應(yīng)頭,需要前端自己處理下載的情況。

后端傳的是二進(jìn)制流,前端應(yīng)該如何通過blob處理二進(jìn)制文件流格式流,并實(shí)現(xiàn)前端下載文件流格式

1.加和不加responseType: 'blob'的區(qū)別

前提:axios請求圖片下載地址

function handleDownload() {
    axios({
      url: 'http://localhost:3001/saveImg',
      // responseType: 'blob',//axios請求配置中設(shè)置和不設(shè)置responseType
      method: 'get'
    })
      .then(data => {
        console.log(data)
        const blog = new Blob([data.data], {
          type: 'image/jpeg'
        }) // 將data數(shù)據(jù)轉(zhuǎn)為blob對象
        const url = window.URL.createObjectURL(blog) // 將blob對象轉(zhuǎn)為blob地址
        console.log(url)
        // 創(chuàng)建DOM實(shí)現(xiàn)下載
        // let a = document.createElement('a')
        // a.download = 'img01.jpg'
        // a.href = url
        // a.click()
      }).catch(err => {
        console.error(err)
      })
  }

結(jié)果

不加

responseType如果不設(shè)置,默認(rèn)值是JSON。從結(jié)果來看,responsetype的值不同,axios會(huì)對響應(yīng)的數(shù)據(jù)進(jìn)行響應(yīng)的轉(zhuǎn)換。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容