vue3 文件下載(excel/rar/zip)

安裝axios

npm install axios

在項目中引入

?

import axios from 'axios';

1、get接口excel文件下載


const file_key = ref('')
const downLoadExcel = (value:any) => {//file_key.value = value axios({method: "get",url: "/api/da/download_excel/",//url: "/api/da/download_excel/" + file_key.value + "/",//帶參數params: params.value,responseType: "blob",headers: {Authorization: "Bearer "+sessionStorage.getItem("token"),'Cache-Control': 'no-cache','Pragma': 'no-cache',},}).then((res) => {const blob = new Blob([res.data]);let contentDisposition = res.headers["content-disposition"];// let fileName = window.decodeURI(//   contentDisposition.substring(contentDisposition.indexOf("=") + 1)// );let fileName = 'downLoad.xlsx';const elink = document.createElement("a"); // 創建a標簽elink.download = fileName; // 為a標簽添加download屬性elink.style.display = "none";elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click(); // 點擊下載URL.revokeObjectURL(elink.href); // 釋放URL 對象document.body.removeChild(elink); // 釋放標簽message.success('下載成功')}).catch((error) => {message.error('下載失敗')});
}

2、get 下載 rar 文件

const downLoadRar = () => {axios({method: "get",url: "/api/dl/downloadmodel/",responseType: "blob",headers: {Authorization: "Bearer "+sessionStorage.getItem("token"),},}).then((res) => {const blob = new Blob([res.data], { type: 'application/x-rar-compressed' });let contentDisposition = res.headers["content-disposition"];let fileName = '下載文件.rar';if (contentDisposition) { // 如果響應頭中包含文件名信息,則解析出來const regex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;const matches = regex.exec(contentDisposition);if (matches != null && matches[1]) {fileName = matches[1].replace(/['"]/g, '');}}const elink = document.createElement("a"); // 創建a標簽elink.download = fileName; // 為a標簽添加download屬性elink.style.display = "none";elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click(); // 點擊下載URL.revokeObjectURL(elink.href); // 釋放URL 對象document.body.removeChild(elink);message.success('導出成功')}).catch((error) => {message.error('導出失敗')});
}

3、get下載 zip 文件

const downLoadZip = () => {axios({method: "get",url: "/api/download_file/",responseType: "blob",headers: {Authorization: "Bearer "+sessionStorage.getItem("token"),},}).then((res) => {const blob = new Blob([res.data], { type: 'application/zip' });let contentDisposition = res.headers["content-disposition"];let fileName = 'downloaded_file.zip'; // 默認文件名// 嘗試從響應頭中提取文件名,假設文件名包含中文或特殊字符時使用了UTF-8編碼if (contentDisposition && contentDisposition.indexOf('filename') !== -1) {const regex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;const matches = regex.exec(contentDisposition);if (matches != null && matches[1]) {fileName = decodeURIComponent(matches[1].trim().replace(/['"]/g, ''));}}const elink = document.createElement("a"); // 創建a標簽elink.download = fileName; // 為a標簽添加download屬性elink.style.display = "none";elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click(); // 點擊下載URL.revokeObjectURL(elink.href); // 釋放URL 對象document.body.removeChild(elink); // 釋放標簽message.success('導出成功')}).catch((error) => {message.error('導出失敗')});
}

post 下載

const downLoad = () => {axios({method: "post",url: "/api/download_file/",responseType: "blob",headers: {Authorization: "Bearer "+sessionStorage.getItem("token"),},//post 參數data: {file_key: data.filename}}).then((res) => {//下載zipconst blob = new Blob([res.data], { type: 'application/zip' });//下載rar//const blob = new Blob([res.data], { type: 'application/x-rar-compressed' });//下載excel// const blob = new Blob([res.data]);let contentDisposition = res.headers["content-disposition"];let fileName = 'downloaded_file.zip'; // 默認文件名// 嘗試從響應頭中提取文件名,假設文件名包含中文或特殊字符時使用了UTF-8編碼if (contentDisposition && contentDisposition.indexOf('filename') !== -1) {const regex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;const matches = regex.exec(contentDisposition);if (matches != null && matches[1]) {fileName = decodeURIComponent(matches[1].trim().replace(/['"]/g, ''));}}const elink = document.createElement("a"); // 創建a標簽elink.download = fileName; // 為a標簽添加download屬性elink.style.display = "none";elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click(); // 點擊下載URL.revokeObjectURL(elink.href); // 釋放URL 對象document.body.removeChild(elink); // 釋放標簽message.success('導出成功')}).catch((error) => {message.error('導出失敗')});
}

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

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

相關文章

RT-Thread RTThread studio 初使用

RT-Thread Studio 下載 https://www.rt-thread.org/studio.html 安裝使用 https://bbs.elecfans.com/jishu_2425653_1_1.html 4 編譯問題解決 問題一:error: unknown type name clock_t 具體的類型值是在sys/_types.h中定義的,需要包含sys/_types.h 這個…

漢諾塔專題:P1760 通天之漢諾塔 題解 + Problem D: 漢諾塔 題解

1. P1760 通天之漢諾塔 題解 題目背景 直達通天路小A歷險記第四篇 題目描述 在你的幫助下,小 A 成功收集到了寶貴的數據,他終于來到了傳說中連接通天路的通天山。但是這距離通天路仍然有一段距離,但是小 A 突然發現他沒有地圖&#xff0…

探索 HumanoidBench:類人機器人學習的新平臺

在科技飛速發展的當下,類人機器人逐漸走進我們的視野,它們有著和人類相似的外形,看起來能像人類一樣在各種環境里完成復雜任務,潛力巨大。但實際上,讓類人機器人真正發揮出實力,還面臨著重重挑戰。 這篇文…

數據結構中的寶藏秘籍之廣義表

廣義表,也被稱作列表(Lists),是一種遞歸的數據結構。它就像一個神秘的盒子,既可以裝著單個元素(原子),也可以嵌套著其他的盒子(子列表)。比如廣義表 (a (b c)…

【jenkins】首次配置jenkins

第一步,輸入管理員密碼 cat /var/jenkins_home/secrets/initialAdminPassword第二步,點擊安裝推薦的插件 第三步,創建管理員用戶 第四步,返回實例 第五步, 升級jenkins 第六步, 修復提示 第七步&#xff0c…

Android studio—socketIO庫return與emit的使用

文章目錄 一、Socket.IO庫簡單使用說明1. 后端 Flask Flask-SocketIO2. Android 客戶端集成 Socket.IO3. 布局文件注意事項 二、接受服務器消息的二種方法1. 客戶端接收通過 emit 發送的消息功能使用場景后端代碼(Flask-SocketIO)客戶端代碼&#xff08…

用Prompt 技術【提示詞】打造自己的大語言智能體

機器如何按照人類的指令執行任務的探索 機器需具備理解任務敘述的能力,以便能夠按照人類的指令執行任務,為機器提供一些范例作為參考,使其能夠理解該執行的任務類型。這樣的學習方式稱為“Instruction learning”,透過精心設計的…

Node.js 數據庫 事務 項目示例

1、參考:JavaScript語言的事務管理_js 函數 事務性-CSDN博客 或者百度搜索:Nodejs控制事務, 2、實踐 2.1、對于MySQL或MariaDB,你可以使用mysql或mysql2庫,并結合Promise或async/await語法來控制事務。 使用 mysql2…

【Mamba】MambaVision論文閱讀

文章目錄 MambaVision一、研究背景(一)Transformer vs Mamba?(二)Mamba in CV? 二、相關工作?(一)Transformer 在計算機視覺領域的進展?(二)Mamba 在計算機視覺領域的探索? 三、…

前端面試寶典---原型鏈

引言----感謝大佬的講解 大佬鏈接 原型鏈示意圖 原型鏈問題中需要記住一句話:一切變量和函數都可以并且只能通過__proto__去找它所在原型鏈上的屬性與方法 原型鏈需要注意的點 看上圖可以發現 函數(構造函數)也可以通過__proto__去找到原…

C語言---FILE結構體

一、FILE 結構體的本質與定義 基本概念 FILE 是 C 語言標準庫中用于封裝文件操作的結構體類型&#xff0c;定義于 <stdio.h> 中。它代表一個“文件流”&#xff0c;可以是磁盤文件、標準輸入輸出&#xff08;stdin/stdout/stderr&#xff09;或其他輸入輸出設備。 實現特…

基于大模型的直腸息肉診療全流程風險預測與方案優化研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、大模型技術概述 2.1 大模型原理簡介 2.2 大模型在醫療領域應用現狀 三、直腸息肉術前預測與準備 3.1 基于大模型的術前風險預測 3.1.1 息肉性質預測 3.1.2 手術難度預測 3.2 基于預測結果的術前準備 3.…

華為OD機試真題——MELON的難題(2025A卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 A卷 200分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析&#xff1b; 并提供Java、python、JavaScript、C、C語言、GO六種語言的最佳實現方式&#xff01; 2025華為OD真題目錄全流程解析/備考攻略/經驗分享 華為OD機試真題《MELON的…

AI數據分析與BI可視化結合:解鎖企業決策新境界

大家好&#xff0c;今天我們來聊聊一個前沿而熱門的話題——AI數據分析與BI可視化結合&#xff0c;如何攜手推動企業決策邁向新高度。在數據爆炸的時代&#xff0c;企業如何高效利用這些數據&#xff0c;成為制勝的關鍵。AI數據分析與BI可視化的結合&#xff0c;正是解鎖這一潛…

克服儲能領域的數據處理瓶頸及AI拓展

對于儲能研究人員來說&#xff0c;日常工作中經常圍繞著一項核心但有時令人沮喪的任務&#xff1a;處理實驗數據。從電池循環儀的嗡嗡聲到包含電壓和電流讀數的大量電子表格&#xff0c;研究人員的大量時間都花在了提取有意義的見解上。長期以來&#xff0c;該領域一直受到對專…

【SpringBoot+Vue自學筆記】002 SpringBoot快速上手

跟著這位老師學習的&#xff1a;https://www.bilibili.com/video/BV1nV4y1s7ZN?vd_sourceaf46ae3e8740f44ad87ced5536fc1a45 最好和老師的idea版本完全一致&#xff01;截至本文寫的當日最新的idea好像默認jdk17&#xff0c;配置時遇到很多bug。 &#x1f33f; Spring Boot&a…

SpringAI+DeepSeek大模型應用開發——2 大模型應用開發架構

目錄 2.大模型開發 2.1 模型部署 2.1.1 云服務-開放大模型API 2.1.2 本地部署 搜索模型 運行大模型 2.2 調用大模型 接口說明 提示詞角色 ?編輯 會話記憶問題 2.3 大模型應用開發架構 2.3.1 技術架構 純Prompt模式 FunctionCalling RAG檢索增強 Fine-tuning …

藍橋杯12. 日期問題

日期問題 原題目鏈接 題目描述 小明正在整理一批歷史文獻。這些歷史文獻中出現了很多日期。 小明知道這些日期都在 1960 年 1 月 1 日 至 2059 年 12 月 31 日 之間。 令小明頭疼的是&#xff0c;這些日期采用的格式非常不統一&#xff1a; 有的采用 年/月/日有的采用 月…

STM32使用rand()生成隨機數并顯示波形

一、隨機數生成 1、加入頭文件&#xff1a;#include "stdlib.h" 2、定義一個用作生成隨機數種子的變量并加入到滴答定時器中不斷自增&#xff1a;uint32_t run_times 0; 3、設置種子&#xff1a;srand(run_times);//每次生成隨機數前調用一次為佳 4、生成一個隨…

『前端樣式分享』聯系我們卡片式布局 自適應屏幕 hover動效 在wikijs中使用 (代碼拿來即用)

目錄 預覽效果分析要點響應式網格布局卡片樣式&#xff1a;陰影和過渡效果 代碼優化希望 長短不一的郵箱地址在左右居中的同時,做到左側文字對齊(wikijs可用)總結 歡迎關注 『前端布局樣式』 專欄&#xff0c;持續更新中 歡迎關注 『前端布局樣式』 專欄&#xff0c;持續更新中…