【vue】实现按钮点击下载文件

项目要求实现表格按钮点击下载文件,之前做下载都是直接接接口,这次下载路径在表格中已经返回了,需要在前端处理下载需求。

以下是方法代码

    exportExcel() {
            axios.defaults.headers['content-type'] = 'application/json;charset=UTF-8'
            axios.defaults.headers['TOKEN'] = util.cookies.get('token')
            axios({
                method: 'get',
                url: url, // 请求地址
                responseType: 'blob' // 表明返回服务器返回的数据类型
            }).then(res => {
                let tempName = res.headers['content-disposition'].split(';')[1].split('filename=')[1]
                // iconv-lite解决中文乱码
                let iconv = require('iconv-lite')
                iconv.skipDecodeWarning = true// 忽略警告
                let fileName = iconv.decode(tempName, 'utf-8')
                let blob = new Blob([res.data], {type: 'application/octet-stream'})//转换成二进制对象
                if ('download' in document.createElement('a')) { // 不是IE浏览器
                    let url = window.URL.createObjectURL(blob)//二进制对象转换成url地址
                    let link = document.createElement('a')
                    link.style.display = 'none'
                    link.href = url
                    link.setAttribute('download', fileName)
                    document.body.appendChild(link)
                    link.click()
                    document.body.removeChild(link) // 下载完成移除元素
                    window.URL.revokeObjectURL(url) // 释放掉blob对象
                } else {
                    window.navigator.msSaveBlob(blob, fileName)
                }
            }, err => {
                console.error('download err', err)
            })
        },

方法二 (其他情况)
【已经确定路径的单一文件】
(直接页面打开,部分文件类型好像实现不了)

templateUpload(){//下载模板
				window.open(this.$app_config.api_host +'/excel/daoruyuangong.xlsx')
			}

方法三(其他情况)
【(利用a标签实现)利用可传参的接口】

downLoad(id){
                let a = document.createElement('a')
                a.href = this.config.uploadURL+"/api/activitiesPhotoResources/download?id="+id 
                a.target = '_blank'//在新窗口打开
                a.click();
            },

方法四
【写在html里的】

 <a :href="$app_config.api_host+`/api/attachments/showFile?path=${encodeURI(row.path)}`" download>
     <el-button type="text" size="mini" class="table-btn-reply">下载</el-button>
</a>
  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值