vue中點(diǎn)擊按鈕下載文件的實(shí)現(xiàn)方式
vue點(diǎn)擊按鈕下載文件

方法一
當(dāng)后端直接返回文件下載路徑給你時(shí)
項(xiàng)目中需要用到文件下載功能,查了資料發(fā)現(xiàn)需要用到a標(biāo)簽的特性,但是這邊需要用到點(diǎn)擊按鈕下載,懶得寫樣式
于是用了以下代碼:
<div class="btns">
<el-button size="mini" type="primary" @click="$router.push(`/portal/${item.id}/detail`)">查看軟件</el-button>
<el-link target="_blank" :href="item.sourceUrl | filterUrl" rel="external nofollow" :underline="false" style="margin-left:15px">
<el-button size="mini" type="warning">軟件下載</el-button>
</el-link>
</div>
在el-button的外面套了一層el-link,
如下圖,可以正常下載

以下是el-link文字鏈接的屬性

新增方法二
當(dāng)后端返回文件UID給你是時(shí)
有時(shí)候,后端接口返回的是文件的uid,需要調(diào)用接口獲取文件的相關(guān)信息

返回值如下圖

此處如果用第一種方法肯定不行,于是做如下處理
handLoad(uid){ //handload可以綁到下載按鈕上,點(diǎn)擊按鈕時(shí)調(diào)用此方法
//此方法根據(jù)自己項(xiàng)目來的,getFileInfoByUid是項(xiàng)目接口,根據(jù)項(xiàng)目自行調(diào)整
getFileInfoByUid(uid).then(res=>{
//res就是上圖的返回值,然后調(diào)用下面的download方法
this.download(res.name,res.originalPath)
})
},
download(name,url){
const ele = document.createElement('a');
ele.setAttribute('href', this.$options.filters['filterUrl'](url));
//this.$options.filters['filterUrl']是調(diào)用全局過濾器,filterUrl是你自己項(xiàng)目main.js里面定義的過濾器
ele.setAttribute('download',name);
ele.style.display = 'none';
document.body.appendChild(ele);
ele.click();
document.body.removeChild(ele);
},
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue.js源代碼core scedule.js學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了vue.js源代碼core scedule.js的學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Vue將后端數(shù)據(jù)轉(zhuǎn)成樹形結(jié)構(gòu)的方法示例代碼
vue是一款流行的前端框架,其中很多操作都是基于數(shù)組進(jìn)行的,這篇文章主要介紹了Vue將后端數(shù)據(jù)轉(zhuǎn)成樹形結(jié)構(gòu)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-06-06
vue2.0 better-scroll 實(shí)現(xiàn)移動(dòng)端滑動(dòng)的示例代碼
本篇文章主要介紹了vue2.0 better-scroll 實(shí)現(xiàn)移動(dòng)端滑動(dòng)的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2018-01-01
vue.js使用v-pre與v-html輸出HTML操作示例
這篇文章主要介紹了vue.js使用v-pre與v-html輸出HTML操作,結(jié)合實(shí)例形式分析了vue.js基于v-pre與v-html屬性輸出HTML的具體操作技巧,需要的朋友可以參考下2018-07-07
vue3緩存頁面keep-alive及路由統(tǒng)一處理詳解
當(dāng)我們不想每次跳轉(zhuǎn)路由都會(huì)重新加載頁面時(shí)(重新加載頁面很耗時(shí)),就可以考慮使用keep-alive緩存頁面了,這篇文章主要給大家介紹了關(guān)于vue3緩存頁面keep-alive及路由統(tǒng)一處理的相關(guān)資料,需要的朋友可以參考下2021-10-10

