vue公共下载文件方法

本文介绍如何在Vue项目中创建一个全局的文件下载方法,该方法可以在应用的任何页面调用,方便快捷地处理文件下载需求。

一、在main.js中定义一个公共的方法

// method: 传参方式get或post 
// url:接口地址
// name: 下载文件名
//key: 本项目中的使用情况 可不要
// data: 需要的传参数据(一般get不需要)
const exportExsl = (method,url,name,key = 'BASE_URL',data = {})=>{
  fetch(`http://${window.online_config[key] + url}`,{
    method,
    responseType: 'blob',
    headers:{
      Authorization:'Basic ' +  localStorage.getItem('Access-Token'),//定义token
      "Content-Type": "application/json;charset=utf-8",
    },
    body:method  == 'post' ? JSON.stringify(data) : null
    })
    .then(res => {   
      console.log('res.headers',res)  
        return res.blob();
    })
    .then(blob => {
        let link = document.createElement('a');
        link.href = window.URL.createObjectURL(blob);
        link.download = name;
        link.click();
        window.URL.revokeObjectURL(link.href);
    })
    .catch((err) => {
      throw '异常:'+ err
    });
  
}

// 导出
Vue.prototype.$exportExsl = exportExsl

二、页面中的使用方法

       <a-button class="btn_action" @click="$exportExsl('get','/terminalUser/excleTemplate','终端用户.xlsx')">
            导出
        </a-button>
  handleDownloadQrcode(blob) { 
      let list = [blob.id];
      let timestamp = new Date().getTime();
      this.$exportExsl("post","/qr_code/download",timestamp + ".zip","BASE_URL",list)
    },
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值