You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FileSaver.js移除JavaScript下载文件名中的时间戳

解决FileSaver下载CSV时文件名自动附加时间戳的问题

我之前也碰到过类似的情况,大概率是这两个原因导致的,咱们一步步来排查解决:

首先检查Blob的MIME类型是否正确

你当前设置的type: "multipart/form-data"完全不对呀!CSV文件的正确MIME类型应该是text/csv,这个错误可能导致FileSaver对文件的处理出现异常,进而自动附加时间戳。

修改后的代码应该是这样:

// 修正为正确的CSV MIME类型
let blob = new Blob([response], { type: "text/csv;charset=utf-8;" });
saveAs(blob, "xyz-29092918-28092019.csv");

其次检查服务器的响应头

如果上面的修改没用,那很可能是服务器返回的Content-Disposition头里已经指定了带时间戳的文件名。FileSaver在这种情况下会优先使用服务器指定的文件名,而不是你传入的参数。

举个例子,如果服务器返回的响应头是这样:

Content-Disposition: attachment; filename=xyz-29092918-28092019-2019-09-20T001653.611.csv

那前端的saveAs参数就会被忽略。这时候有两种解决办法:

  1. 修改服务器配置:让后端把Content-Disposition里的文件名改成你想要的格式,不要附加时间戳
  2. 前端强制覆盖:如果没法改后端,就在前端处理响应时忽略响应头的文件名,直接用自己指定的。比如用fetch请求的话:
fetch('/你的API地址')
  .then(response => {
    // 直接获取blob内容,不读取响应头的文件名
    return response.blob();
  })
  .then(blobData => {
    // 重新封装成正确的CSV Blob
    const csvBlob = new Blob([blobData], { type: "text/csv;charset=utf-8;" });
    saveAs(csvBlob, "xyz-29092918-28092019.csv");
  });

最后排查FileSaver版本问题

如果上面两步都试过还是不行,建议你更新到最新版本的FileSaver.js。某些旧版本的库存在自动附加时间戳的bug,更新后应该能解决。

内容的提问来源于stack exchange,提问作者Ashwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:36:01