VUE+ElementUI下載文件的幾種方式(小結(jié))
1.創(chuàng)建超鏈接,通過a標(biāo)簽的鏈接向后端服務(wù)發(fā)get請求,接收后端的文件流
<a :href='"/user/downloadExcel"' >下載模板</a>
2.創(chuàng)建iframe的方式
<el-button size="mini" type="text" icon="el-icon-download" @click="handleDownload(scope.row)">下載</el-button> ? ? /* 下載 */ ? ? handleDownload(row) { ? ? ? this.loadingOverLay = this.$loading({ ? ? ? ? lock: true, ? ? ? ? text: "文件生成中", ? ? ? ? spinner: "el-icon-loading", ? ? ? ? background: "rgba(0,0,0,0.7)", ? ? ? }); ? ? ? var elemIF = document.createElement("iframe"); ? ? ? elemIF.src = process.env.VUE_APP_BASE_API + "/transcode/download/" + row.id; ? ? ? elemIF.style.display = "none"; ? ? ? document.body.appendChild(elemIF); ? ? ? this.loadingOverLay.close(); ? ? },
3.對(duì)后端發(fā)的post請求,使用blob格式
<el-button ?size="mini" class="filter-item" type="primary" icon="el-icon-download" @click="handleExport(scope.row)">導(dǎo)出</el-button> //method方法 handleExport(row){ const url="/user/downloadExcel" const options = {snapshotTime:formatDate(new Date(row.snapshotTime), 'yyyy-MM-dd hh:mm')} exportExcel(url,options) } /** ?* 封裝導(dǎo)出Excal文件請求 ?* @param url ?* @param data ?* @returns {Promise} ?*/ //api.js export function exportExcel(url, options = {}) { ? return new Promise((resolve, reject) => { ? ? console.log(`${url} 請求數(shù)據(jù),參數(shù)=>`, JSON.stringify(options)) ? ? axios.defaults.headers['content-type'] = 'application/json;charset=UTF-8' ? ? axios({ ? ? ? method: 'post', ? ? ? url: url, // 請求地址 ? ? ? data: options, // 參數(shù) ? ? ? responseType: 'blob' // 表明返回服務(wù)器返回的數(shù)據(jù)類型 ? ? }).then( ? ? ? response => { ? ? ? ? resolve(response.data) ? ? ? ? let blob = new Blob([response.data], { ? ? ? ? ? type: 'application/vnd.ms-excel' ? ? ? ? }) ? ? ? ? console.log(blob) ? ? ? ? let fileName = Date.parse(new Date()) + '.xlsx' ? ? ? ? if (window.navigator.msSaveOrOpenBlob) { ? ? ? ? ? // console.log(2) ? ? ? ? ? navigator.msSaveBlob(blob, fileName) ? ? ? ? } else { ? ? ? ? ? // console.log(3) ? ? ? ? ? var link = document.createElement('a') ? ? ? ? ? link.href = window.URL.createObjectURL(blob) ? ? ? ? ? link.download = fileName ? ? ? ? ? link.click() ? ? ? ? ? //釋放內(nèi)存 ? ? ? ? ? window.URL.revokeObjectURL(link.href) ? ? ? ? } ? ? ? }, ? ? ? err => { ? ? ? ? reject(err) ? ? ? } ? ? ) ? }) }
4.導(dǎo)出json文件
1.安裝:
npm install file-saver --save
2.引入:
import FileSaver from 'file-saver'
/**? ?* data: 封裝好的json數(shù)據(jù)? ?* JSON.stringify(data, null, 2): 格式化json數(shù)據(jù) 方便閱讀 ?* new Blob(parame1, parame2): 轉(zhuǎn)為Blob文件流. ?* parame1 [] 數(shù)據(jù)源? ?* parame2 文件流類型 ?*/ const blob = new Blob([JSON.stringify(data, null, 2)], {type: 'application/json'}) ? /**? ?* FileSaver.saveAs(parame1, parame2) ?瀏覽器保存文件 ?* parame1: Blob文件流 ?* parame2:文件名 ?*/ FileSaver.saveAs(blob, '文件名.json')
到此這篇關(guān)于VUE+ElementUI下載文件的幾種方式(小結(jié))的文章就介紹到這了,更多相關(guān)VUE ElementUI下載文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue2移動(dòng)端+swiper實(shí)現(xiàn)異形的slide方式
這篇文章主要介紹了vue2移動(dòng)端+swiper實(shí)現(xiàn)異形的slide方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03詳解Vue如何進(jìn)行表單聯(lián)動(dòng)與級(jí)聯(lián)選擇
表單聯(lián)動(dòng)和級(jí)聯(lián)選擇是Vue.js中常見的功能,在下面的文章中,我們將討論如何在Vue.js中實(shí)現(xiàn)表單聯(lián)動(dòng)和級(jí)聯(lián)選擇,感興趣的小伙伴可以了解一下2023-06-06Vue插件實(shí)現(xiàn)過程中遇到的問題總結(jié)
隨著Vue.js越來越火,Vue.js 的相關(guān)插件也在不斷的被貢獻(xiàn)出來,數(shù)不勝數(shù),這篇文章主要給大家介紹了關(guān)于Vue插件實(shí)現(xiàn)過程中遇到的問題,需要的朋友可以參考下2021-08-08Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入的四種方法(resource、Axios、Fetch、Excel導(dǎo)入)
本文主要介紹了Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入的四種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Vue前端利用slice()方法實(shí)現(xiàn)分頁器
分頁功能是常見的需求之一,本文主要介紹了Vue前端利用slice()方法實(shí)現(xiàn)分頁器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Vue中import與@import的區(qū)別及使用場景說明
這篇文章主要介紹了Vue中import與@import的區(qū)別及使用場景說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Vue中Axios從遠(yuǎn)程/后臺(tái)讀取數(shù)據(jù)
今天小編就為大家分享一篇關(guān)于Vue中Axios從遠(yuǎn)程/后臺(tái)讀取數(shù)據(jù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01vue實(shí)現(xiàn)按鈕文字動(dòng)態(tài)改變
這篇文章主要介紹了vue實(shí)現(xiàn)按鈕文字動(dòng)態(tài)改變方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11