VUE前端Excel文件下载,使用后台文件名

1 篇文章 0 订阅

第1步:在后台响应response中增加:

response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "utf-8"));
// 这步很重要,需要在给前端返回的请求头中添加Content-Disposition字段,否则前端会取不到Content-Disposition的信息
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");

第2步:前端请求后台接口获取数据

import request from '@/router/axios'
export function handleDownNew(url,method,pdata) {
  return request({
    url: url,
    method: method,
    responseType: 'blob',
    params: pdata
  }).then((response) => { // 处理返回的文件流
    var dispositionStr = response.headers['content-disposition'];
    if (dispositionStr == null || dispositionStr === "") {
        alert("下载失败!");
        return;
    } 
    // 获取文件名
    let dispositionArr = dispositionStr.split(";");
    // 我们的文件名可能含有汉字,因此在后端进行了UTF-8编码处理,此处进行解码
    let fileName = decodeURIComponent(dispositionArr[1]);
    fileName = fileName.split("fileName=")[1];
    const blob = new Blob([response.data], {type: 'application/vnd.ms-excel'})
    const link = document.createElement('a')
    link.href = URL.createObjectURL(blob)
    link.download = fileName
    document.body.appendChild(link)
    link.click()
    window.setTimeout(function () {
      URL.revokeObjectURL(blob)
      document.body.removeChild(link)
    }, 0)
  })
}

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值