侧边栏壁纸
  • 累计撰写 75 篇文章
  • 累计创建 41 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

JS 在 Header 中传递 token 下载文件

已删除用户
2020-06-30 / 0 评论 / 0 点赞 / 209 阅读 / 1890 字 / 正在检测是否收录...

答案是使用 FileSaver.js。下面提供一些关键代码。

后端

// 文件名
String fileName = "文件名.文件后缀";
// 依情况而定,我下载的是 xls 文件
response.setContentType("application/vnd.ms-excel;charset=utf-8");
// 传递文件名,这里将文件名编码后又替换了 + 号
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()).replace("+","%20"));
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");

前端

const xhr = new XMLHttpRequest()
xhr.open('GET', '接口地址')
xhr.responseType = 'blob'
xhr.onload = function () {
  const fileName = xhr.getResponseHeader("Content-Disposition").split(";")[1].split("filename=")[1];
  saveAs(xhr.response, decodeURI(fileName));
}
// 传递 token
xhr.setRequestHeader('token', localStorage.getItem("token"));
xhr.send();

参考资料

0

评论区