vue中点击按钮下载文件的实现方式

 更新时间:2023年10月24日 09:13:37   作者:橘哥哥  
这篇文章主要介绍了vue中点击按钮下载文件的实现方式,具有很的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue点击按钮下载文件

方法一 

当后端直接返回文件下载路径给你时

项目中需要用到文件下载功能,查了资料发现需要用到a标签的特性,但是这边需要用到点击按钮下载,懒得写样式

于是用了以下代码:

<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文字链接的属性

新增方法二 

当后端返回文件UID给你是时

有时候,后端接口返回的是文件的uid,需要调用接口获取文件的相关信息

返回值如下图

此处如果用第一种方法肯定不行,于是做如下处理

handLoad(uid){   //handload可以绑到下载按钮上,点击按钮时调用此方法
	//此方法根据自己项目来的,getFileInfoByUid是项目接口,根据项目自行调整
    getFileInfoByUid(uid).then(res=>{
    	//res就是上图的返回值,然后调用下面的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']是调用全局过滤器,filterUrl是你自己项目main.js里面定义的过滤器
   ele.setAttribute('download',name);
   ele.style.display = 'none';
   document.body.appendChild(ele);
   ele.click();
   document.body.removeChild(ele);
},

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue2 vue3中使用Echarts详细

    vue2 vue3中使用Echarts详细

    这篇文章主要给大家介绍的是vue2 vue3中使用Echarts的相关资料,下面文章 会详细介绍该内容,感兴趣的小伙伴不要错过哟
    2021-09-09
  • vue实现指定区域自由拖拽、打印功能

    vue实现指定区域自由拖拽、打印功能

    这篇文章主要为大家详细介绍了vue实现指定区域自由拖拽、打印功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue3项目中配置TypeScript和JavaScript的兼容

    Vue3项目中配置TypeScript和JavaScript的兼容

    在Vue3开发中,常见的使用JavaScript(JS)编写代码,但也会有调整编写语言使用TypeScript(TS)的需求,因此,在Vue3项目设置中兼容TS和JS是刻不容缓的重要任务,
    2023-08-08
  • Vue中使用SVG-ICON的配置方法

    Vue中使用SVG-ICON的配置方法

    在项目开发中,经常会用到svg图标,之前用的都是vue-svg-icon,接下来通过本文给大家介绍Vue中使用SVG-ICON的配置方法,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • vue的hash值原理也是table切换实例代码

    vue的hash值原理也是table切换实例代码

    这篇文章主要介绍了vue的hash值原理也是table切换,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • vue3 element-plus如何使用icon图标组件

    vue3 element-plus如何使用icon图标组件

    这篇文章主要介绍了vue3 element-plus如何使用icon图标组件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • element-ui复杂table表格动态新增列、动态调整行以及列顺序详解

    element-ui复杂table表格动态新增列、动态调整行以及列顺序详解

    这篇文章主要给大家介绍了关于element-ui复杂table表格动态新增列、动态调整行以及列顺序的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Vue click事件传递参数的示例教程

    Vue click事件传递参数的示例教程

    这篇文章主要介绍了Vue click事件传递参数--方法/教程/实例,本文用示例介绍Vue中事件传参的方法,采用click这个事件进行展示,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Vue中的nextTick作用和几个简单的使用场景

    Vue中的nextTick作用和几个简单的使用场景

    这篇文章主要介绍了Vue中的nextTick作用和几个简单的使用场景,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2021-01-01
  • 讲解vue-router之什么是动态路由

    讲解vue-router之什么是动态路由

    这篇文章主要介绍了讲解vue-router之什么是动态路由,详细的介绍了什么是动态路由,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论