欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中下載文件的方法示例詳解

 更新時間:2023年11月14日 14:18:56   作者:簡單Janeee  
這篇文章主要介紹了vue中下載文件的方法,通過實例代碼講解了下載后端返回文件和下載本地文件,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

1. 下載后端返回文件

1.1 后端為post請求返回二進制流文件

Blob

Blob對象標識一個不可變、原始數(shù)據(jù)的類文件對象。Blob表示的不一定是JavaScript原生格式的數(shù)據(jù)

responseType

responseType它表示服務(wù)器響應(yīng)的數(shù)據(jù)類型,由于后臺返回來的是二進制數(shù)據(jù),所以要把它設(shè)為‘blob’

通過設(shè)置responseType為blob,可以直接拿到二進制文件轉(zhuǎn)化為Blob,兩種使用 Blob 實現(xiàn)文件下載的方式

URL.createObjectURL

在瀏覽器端,實現(xiàn)直接下載文件,就是使用a標簽來只想文件的下載地址。window.location.href的本質(zhì)也是這樣,因此在拿到二進制文件對應(yīng)的Blob對象后,需要為這個Blob對象創(chuàng)建一個指向它的下載地址的URL

URL.createObjectURL 方法則可以實現(xiàn)接收 File 或 Blob 對象,創(chuàng)建一個 DOMString,包含了對應(yīng)的 URL,指向 Blob 或 File 對象,它看起來會是這樣:

“blob:http://localhost:8080/a48aa254-866e-4c66-ba79-ae71cf5c1cb3”

完整使用:

export const downloadFile = (fileStream, name, extension, type = "") => {
  const blob = new Blob([fileStream], {type});
  const fileName = `${name}.${extension}`;
  if ("download" in document.createElement("a")) {
    const elink = document.createElement("a");
    elink.download = fileName;
    elink.style.display = "none";
    elink.href = URL.createObjectURL(blob);
    document.body.appendChild(elink);
    elink.click();
    URL.revokeObjectURL(elink.href);
    document.body.removeChild(elink);
  } else {
    navigator.msSaveBlob(blob, fileName);
  }
};

FileReader

FileReader 對象也可以使得我們對 Blob 對象生成一個下載地址 URL,它和 URL.createObject 一樣可以接收 File 或 Blob 對象。
這個過程,主要由兩個函數(shù)完成readAsDataURLonload,前者用于將Blob或File對象轉(zhuǎn)為對應(yīng)的URL,后者用于接收前者完成后的URL,它會在e.target.result
完整使用:

const readBlob2Url  =  (blob, type) =>{
  return new Promise(resolve => {
    const reader = new FileReader()
    reader.onload = (e) => {
      resolve(e.target.result)
    }
    reader.readAsDataURL(blob)
  })
}

1.2 后端直接返回get請求文件

<a href=‘get請求返回的地址’></a>

2. 下載本地文件

前端項目中下載某個地址的文件模塊,文件不想放到后端去下載,在文件大小不太大的情況下,可以把文件放在前端項目中,無論開發(fā)環(huán)境還是生產(chǎn)環(huán)境,都能在同樣路徑下找到那個文件

1.在vue-cli3.x的版本中,將需要下載的文件放到public文件夾中

2.下載文件

<script>
downloadUrl: `${process.env.BASE_URL}file/xxx_template.xlsx`, // 模板下載文件地址
</script>
<template>
<a :href="downloadUrl">點擊下載</a>
</template>

參考資料:
詳解,從后端導(dǎo)出文件到前端(Blob)下載過程

到此這篇關(guān)于vue中下載文件的方法的文章就介紹到這了,更多相關(guān)vue下載文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • el-date-picker時間清空值為null處理方案

    el-date-picker時間清空值為null處理方案

    本文介紹關(guān)于Vue.js項目中時間選擇器組件的問題,當選擇后清空導(dǎo)致值變?yōu)閚ull,進而引發(fā)后臺接口報錯,通過監(jiān)聽`overallForm.time`的值并設(shè)置為空數(shù)組,成功解決此問題,確保了數(shù)據(jù)正確性,同時,建議避免直接監(jiān)聽整個對象以優(yōu)化性能,感興趣的朋友一起看看吧
    2024-08-08
  • vue中watch監(jiān)聽路由傳來的參數(shù)變化問題

    vue中watch監(jiān)聽路由傳來的參數(shù)變化問題

    這篇文章主要介紹了vue中watch監(jiān)聽路由傳來的參數(shù)變化,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • vue自動添加瀏覽器兼容前后綴操作

    vue自動添加瀏覽器兼容前后綴操作

    這篇文章主要介紹了vue自動添加瀏覽器兼容前后綴操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue.js學(xué)習(xí)之過濾器詳解

    Vue.js學(xué)習(xí)之過濾器詳解

    過濾器,本質(zhì)上就是一個函數(shù)。其作用在于用戶輸入數(shù)據(jù)后,它能夠進行處理,并返回一個數(shù)據(jù)結(jié)果。下面這篇文章主要給大家介紹了Vue.js中過濾器的相關(guān)資料,需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • 完美解決iview 的select下拉框選項錯位的問題

    完美解決iview 的select下拉框選項錯位的問題

    下面小編就為大家分享一篇完美解決iview 的select下拉框選項錯位的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue中input標簽上傳本地文件或圖片后獲取完整路徑的解決方法

    vue中input標簽上傳本地文件或圖片后獲取完整路徑的解決方法

    本文給大家介紹vue中input標簽上傳本地文件或圖片后獲取完整路徑,如E:\medicineOfCH\stageImage\xxx.jpg,本文給大家分享完美解決方案,感興趣的朋友跟隨小編一起看看吧
    2023-04-04
  • Vue+axios 實現(xiàn)http攔截及路由攔截實例

    Vue+axios 實現(xiàn)http攔截及路由攔截實例

    這篇文章主要介紹了Vue+axios 實現(xiàn)http攔截及路由攔截 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • vue component 中引入less文件報錯 Module build failed

    vue component 中引入less文件報錯 Module build failed

    這篇文章主要介紹了vue component 中引入less文件報錯 Module build failed的解決方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 基于Vue實現(xiàn)可選擇不連續(xù)的時間范圍的日期選擇器

    基于Vue實現(xiàn)可選擇不連續(xù)的時間范圍的日期選擇器

    這篇文章主要為大家詳細介紹了如何基于Vue.js實現(xiàn)一個可選擇不連續(xù)的時間范圍的日期選擇器,文中的示例代碼簡潔易懂,需要的可以參考一下
    2023-06-06
  • 詳解Vue中狀態(tài)管理Vuex

    詳解Vue中狀態(tài)管理Vuex

    vuex是一個專門為vue.js設(shè)計的狀態(tài)管理模式,并且也可以使用devtools進行調(diào)試。
    2017-05-05

最新評論