vue中如何使用axios根据提交数据下载指定文件

本文介绍在Vue项目中,如何利用Axios通过传递参数来下载特定的数据文件,重点在于设置请求参数和触发文件下载。

vue中如何使用axios根据传参数据提交下载相关数据文件

<el-button type="primary"  class="f-r ml-20 mb-20"  @click.native.prevent="handleDownload">导出</el-button>
handleDownload(){
        //导出
        let fileName='123';
        if(this.ID){
          this.toDownload(this.uploadUrl,this.ID,fileName+'.xlsx')
        }
    },
    toDownload(url, data, fileName) {
        return new Promise((resolve, reject) => {
            axios({
                method: "get",
                url: url,
                params:{ChlinicalID:data},
                responseType: 'blob'
            })
            .then(res => {
                let reader = new FileReader();
                let data = res.data;
                reader.onload = e => {
                    if (e.target.result.indexOf('Result') != -1 && JSON.parse(e.target.result).Result == false) {
                        // 进行错误处理
                    } else {
                        if (!fileName) {
                            let contentDisposition = res.headers['content-disposition'];
                            if (contentDisposition) {
                                fileName = window.decodeURI(res.headers['content-disposition'].split('=')[2].split("''")[1], "UTF-8");
                            }
                        }
                        this.executeDownload(data, fileName);
                    }
                };
                reader.readAsText(data);
                resolve(res.data);
            })
        });
    },
    //  模拟点击a 标签进行下载
     executeDownload(data, fileName) {
        if (!data) {
            return
        }
        let url = window.URL.createObjectURL(new Blob([data]));
        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);
    },

传参: params:{ChlinicalID:data},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值