vue3 下載文件 responseType-blob 或者 a標簽

在 Vue 3 中,你可以使用 axiosfetch 來下載文件,并將 responseType 設置為 blob 以處理二進制數據。以下是一個使用 axios 的示例:

使用 axios 下載文件

  1. 首先,確保你已經安裝了 axios

    npm install axios
    
  2. 然后在你的 Vue 組件中使用 axios 下載文件:

    <template><button @click="onDownloadClick">下載文件</button>
    </template><script>
    import { handleFileExport } from '@/utils/exportExcel';
    import { apiGetDownload } from '@/api/encouragementApi';export default {methods: {function onDownloadClick(row: any) {const response = await axios.get('https://example.com/path/to/file', {responseType: 'blob', // 重要:設置響應類型為 blob});.handleFileExport(response )setTimeout(() => {ElMessage.success("下載成功")}, 1000)}},
    };
    </script>
    

在utils/exportExcel.ts

// 后端接口導出 非同源的資源需要下載,可以將其轉換為Blob:Url
const handleFileExport = (res:any) => {
if(res.request.responseType==='blob'){let contentDisposition = res.headers['content-disposition']if (!contentDisposition) {contentDisposition = `;filename=${decodeURI(res.headers.filename)}`;}const fileName = window.decodeURI(contentDisposition.split(`filename=`)[1]);const blob = new Blob([res.data], {type: 'text/xlsx',});let downloadUrl = window.URL.createObjectURL(blob);let a = document.createElement('a');a.style.display = 'none';a.href = downloadUrl;a.download = fileName;let event = new MouseEvent('click');a.dispatchEvent(event);
}
};

使用a標簽下載

  const url = apiDownloadImportFileStr({encourageTypeId: 1})const link = document.createElement('a')link.href = urllink.click()

關鍵點

  • responseType: 'blob':這是告訴 axiosfetch 返回一個 Blob 對象,用于處理二進制數據。
  • window.URL.createObjectURL:創建一個臨時的 URL,用于下載文件。

注意事項

  • 確保服務器支持跨域請求(CORS),否則可能會遇到跨域問題。
  • 如果文件較大,可能需要考慮分塊下載或顯示下載進度。

通過這些步驟,你可以在 Vue 3 中實現文件下載功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70708.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70708.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70708.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Search API:讓數據獲取變得簡單高效的搜索引擎代理商

Search API&#xff1a;讓數據獲取變得簡單高效的搜索引擎代理商 在當今數字化時代&#xff0c;數據驅動的決策變得越來越重要&#xff0c;而獲取精準、實時的數據是眾多企業、研究機構和開發者的核心需求。然而&#xff0c;直接爬取搜索引擎或行業資訊網站可能會遇到諸多挑戰&…

halcon三維對象處理例程總結(二)

目錄 一、intersect_plane_object_model_3d二、interactive_intersection三、measure_plant四、moments_object_model_3d五、projective_trans_object_model_3d六、read_object_model_3d_generic_ascii一、intersect_plane_object_model_3d 計算三維物體模型與平面之間的相交部…

基于 Python 的項目管理系統開發

基于 Python 的項目管理系統開發 一、引言 在當今快節奏的工作環境中&#xff0c;有效的項目管理對于項目的成功至關重要。借助信息技術手段開發項目管理系統&#xff0c;能夠顯著提升項目管理的效率和質量。Python 作為一種功能強大、易于學習且具有豐富庫支持的編程語言&…

2月24(信息差)

&#x1f30d;“任意舞蹈任意學”&#xff01;宇樹機器人又進化了 傳Meta有意合作拋出橄欖枝 &#x1f384;兩部門&#xff1a;深入推進公路沿線充電基礎設施建設 推動大功率充電技術標準應用 ?小米15 Ultra、小米SU7 Ultra定檔2月27日 雷軍宣布&#xff1a;向超高端進發 1.…

mysql 遷移到人大金倉數據庫

我是在windows上安裝了客戶端工具 運行數據庫遷移工具 打開 在瀏覽器輸入http://localhost:54523/ 賬號密碼都是kingbase 添加mysql源數據庫連接 添加人大金倉目標數據庫 添加好的兩個數據庫連接 新建遷移任務 選擇數據庫 全選 遷移中 如果整體遷移不過去可以單個單個或者幾個…

C++和OpenGL實現3D游戲編程【連載23】——幾何著色器和法線可視化

歡迎來到zhooyu的C++和OpenGL游戲專欄,專欄連載的所有精彩內容目錄詳見下邊鏈接: ??C++和OpenGL實現3D游戲編程【總覽】 1、本節實現的內容 上一節課,我們在Blend軟件中導出經緯球模型時,遇到了經緯球法線導致我們在游戲中模型光照顯示問題,我們在Blender軟件中可以通過…

JUC并發—12.ThreadLocal源碼分析

大綱 1.ThreadLocal的特點介紹 2.ThreadLocal的使用案例 3.ThreadLocal的內部結構 4.ThreadLocal的核心方法源碼 5.ThreadLocalMap的核心方法源碼 6.ThreadLocalMap的原理總結 1.ThreadLocal的特點介紹 (1)ThreadLocal的注釋說明 (2)ThreadLocal的常用方法 (3)ThreadL…

Deepseek和Grok 3對比:寫一段冒泡排序

1、這是訪問Grok 3得到的結果 2、grok3輸出的完整代碼&#xff1a; def bubble_sort(arr):n len(arr) # 獲取數組長度# 外層循環控制排序輪數for i in range(n):# 內層循環比較相鄰元素&#xff0c;j的范圍逐漸減少for j in range(0, n - i - 1):# 如果當前元素大于下一個元…

Java-01-源碼篇-04集合-05-ConcurrentHashMap(1)

1.1 加載因子 加載因子&#xff08;Load Factor&#xff09;是用來決定什么時候需要擴容的一個參數。具體來說&#xff0c;加載因子 當前元素數量 / 桶的數量&#xff0c;當某個桶的元素個數超過了 桶的數量 加載因子 時&#xff0c;就會觸發擴容。 我們都知道 ConcurrentHas…

vue3: directive自定義指令防止重復點擊

第一章 前言 相信很多小伙伴會在各個渠道上搜如何防止重復點擊&#xff0c;之后會推薦什么防抖、節流來避免這一操作&#xff0c;該方法小編就不繼續往下說了。接下來說說小編的場景&#xff0c;項目已經完成的差不多了&#xff0c;但是由于之前大家都是直接點擊事件調用方法的…

忽略Git文件的修改,讓它不被提交

使用Git托管的工程中&#xff0c;經常有這樣的需求&#xff0c;希望文件只是本地修改&#xff0c;不提交到服務端。 如果僅僅是本地存在的文件&#xff0c;我們可以通過.gitignore配置避免文件被提交。 有的時候文件是由git托管的&#xff0c;但是我們希望只在本地修改&#…

Zap:Go 的高性能日志庫

文章目錄 Zap&#xff1a;Go 高性能日志庫一、Zap 的核心優勢二、快速入門 Zap1. 安裝2. 基本用法輸出示例 三、Logger 與 SugaredLogger&#xff1a;如何選擇&#xff1f;1. **Logger&#xff08;高性能模式&#xff09;**2. **SugaredLogger&#xff08;開發友好模式&#xf…

每日一題——順時針旋轉矩陣

順時針旋轉矩陣 目錄 一、問題描述二、解題思路 1. 原地旋轉矩陣2. 旋轉邏輯3. 代碼實現 三、代碼解析 1. 參數說明2. 原地旋轉邏輯3. 返回矩陣 四、示例測試代碼五、復雜度分析 1. 時間復雜度2. 空間復雜度 一、問題描述 以下是內容轉換為 CSDN 的 Markdown 格式&#xf…

接雨水的算法

題目 代碼 # 接雨水算法 def trap(height):# 1. 特殊情況&#xff1a;數組為空 則返回0if not height:return 0n len(height)# 2. 初始化左右指針&#xff0c;左右最大值&#xff0c;結果left, right 0, n - 1# maxleft代表左邊最大值&#xff0c;maxright代表右邊最大值max…

會話對象 HttpSession 二、HttpSession失效

session失效有如下幾個原因&#xff1a; session.invalidate()方法注銷sessionsession超時 <session-config><!-- session的超時時間&#xff0c;以分鐘為單位 --><session-timeout>1</session-timeout> </session-config>Cookie被禁用

Jenkins 創建 Node 到 Windows

Jenkins 創建 Node 到 Windows 一. 新建 Node Dashboard -> Manage Jenkins -> Manage Nodes and Clouds Dashboard -> Nodes -> New Node 二. 配置節點 Node&#xff1a;節點名 Description&#xff1a;節點描述 Number of executors&#xff1a;節點最大同…

Opengl常用緩沖對象功能介紹及使用示例(C++實現)

本文整理了常用的opengl緩沖區對象并安排了使用示例 名稱英文全稱作用簡述頂點數組對象Vertex Array Object (VAO)管理 VBO 和 EBO 的配置&#xff0c;存儲頂點屬性設置&#xff0c;簡化渲染流程&#xff0c;避免重復設置狀態頂點緩沖區對象Vertex Buffer Object (VBO)存儲頂點…

矩陣加減乘除的意義與應用

矩陣加法 數學意義 線性空間的封閉性線性變換的疊加矩陣分解與表示 實際應用 數據聚合與統計圖像處理與計算機視覺物理學與工程學動態系統與優化經濟學與運籌學信號處理與通信游戲開發與計算機圖形學環境科學與地理信息矩陣加法的關鍵特點 矩陣減法 數學意義線性空間封閉性 線…

【Redis原理】底層數據結構 五種數據類型

文章目錄 動態字符串SDS(simple dynamic string )SDS結構定義SDS動態擴容 IntSetIntSet 結構定義IntSet的升級 DictDict結構定義Dict的擴容Dict的收縮Dict 的rehash ZipListZipListEntryencoding 編碼字符串整數 ZipList的連鎖更新問題 QuickListQuickList源碼 SkipListRedisOb…

微信小程序 - 頁面跳轉(wx.navigateTo、wx.redirectTo、wx.switchTab、wx.reLaunch)

API 跳轉 1、wx.navigateTo &#xff08;1&#xff09;基本介紹 功能&#xff1a;保留當前頁面&#xff0c;跳轉到應用內的某個頁面&#xff0c;使用該方法跳轉后可以通過返回按鈕返回到原頁面 使用場景&#xff1a;適用于需要保留當前頁面狀態&#xff0c;后續還需返回的情…