乐趣区

关于vue.js:vueelement项目中导出时文件名称从后台获取

在做后盾管理系统我的项目时,导出性能后端个别返回文件流或者链接,前端进行相干解决,明天只说文件流相干内容,之前我的项目中所有的文件名称都是前端进行拼接的,像 xxxx-20231002122415.xlsx 等等,那下载时文件名称如何从后盾获取呢?

1、首先须要后盾配置

在响应标头中咱们能够看到 Content-Disposition:attachment;filename=xxxxx.xlsx 信息,filename 后边的就是后盾返回的文件名称,个别是进行转码的,然而前端个别是拿不到的,须要后端进行配置:

response.setHeader("Access-Control-Expose-Headers", "Content-Disposition")

2、配置好后,能够看到相应头部有 Access-Control-Expose-Headers 信息,

这个时候能够从 header 中拿到该信息,

// 获取后盾返回的文件名称
        const headerFilename = response.headers["content-disposition"]
          ?.split(";")[1]
          .split("=")[1];

拿到 headerFilename 后,因为后端是 encode 过的,所以前端须要 decode 下,然而有时会呈现乱码状况,而且 decode 后在其余浏览器可能也存在问题,这里能够一劳永逸的解决。

应用 Node.js 的 iconv-lite 解决中文乱码问题。

if (headerFilename) {
          // 对文件名乱码本义 --【Node.js】应用 iconv-lite 解决中文乱码
          let iconv = require("iconv-lite");
          iconv.skipDecodeWarning = true;
          let fileName = iconv.decode(headerFilename, "utf-8");
          data.fileName = fileName;
        }
退出移动版