导出CSV时为什么文件内容总是空的?

Des.翌耀 阅读 27

在做数据导出功能时,用Blob生成CSV文件,但下载后文件内容一直是空的。明明控制台打印数据是正常的…

尝试用字符串拼接方式导出,代码类似这样:

const csvContent = "id,namen1,测试";
const blob = new Blob([csvContent], { type: 'text/csv' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = 'data.csv';
link.click();

但下载的文件确实空的,连表头都没有。如果改成手动创建标签再删除,会不会是DOM操作的问题?或者Blob类型设置不对?

也试过用Papa Parse库转换数据,导出时直接得到类似”data:application/octet-stream;base64…”的链接,但这样生成的文件同样为空…

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
设计师红凤
问题出在字符串拼接的换行符上,CSV内容需要明确换行,不然生成的Blob内容不完整。改成这样:

const csvContent = "id,namen1,测试";
const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'data.csv');
link.click();

如果还是空的,检查浏览器兼容性或者试试用encodeURI包裹一下链接。Papa Parse的话,确保数据格式是数组,直接传对象肯定不行。
点赞 1
2026-02-18 23:17