vue2中实现文件下载

1、api方法的写法

在前端项目中,可能有很多地方需要用到文件的上传和下载,这里的接口如果和其他接口一样编写的话,可能就会出现报错情况,这里给了一种参考写法来提高工作效率

//接口api写法
export function exportTemplate(params,token) {
     // 需要⽤原⽣axios: 
     return axios.create({
        // 请求路径前缀, 按需填写:
        baseURL: "/api",
        // 请求超时时间, 0即可
        timeout: 0,
    })({
        url: api.exportTemplate,
        method: "post",
        params: params,
        headers: {
            // 携带请求头, 按需填写:
            'Authorization': 'Bearer ' + token,
        },
        // 固定写法, 必填:
        responseType: 'blob'
    });
}

2、点击按钮下载文件

上面是调用接口api的方法,这里将点击按钮调用上面的方法来实现下载功能

uploadTemplate(type) {
	 let params = {
	    workId: this.workId,
	    mode: type,
	    projectId: this.$store.state.projectId,
	  };
	  exportTemplate(params, this.$store.state.token).then((res) => {
	    const link = document.createElement("a");
	    // 创建Blob对象, 固定写法
	    let blob = new Blob([res.data], {type: "application/x-download"});
	    // 设置元素样式不可⻅
	    link.style.display = "none";
	    // 创建下载链接
	    link.href = URL.createObjectURL(blob);
	    // 获取⽂件名(后端应确保正确返回⽂件名)
	    const fileName = `${
	      type == 1 ? "新增" : "更新"
	    }台账模板.xlsx`;
	    link.setAttribute("download", fileName);
	    // 加⼊dom树
	    document.body.appendChild(link);
	    // ⼿动触发点击事件
	    link.click();
	    // 移除之前创建的元素
	    document.body.removeChild(link);
	    // 释放Blob对象
	    window.URL.revokeObjectURL(link.href);
	  });
	},

这里就实现了文件下载功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值