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

Node.js环境下如何解析base64编码的CSV获取文件名与实际内容

实现方法

前置说明

你提供的base64不是单纯的CSV文件编码,是完整的multipart/form-data表单请求体的编码,其中已经包含了文件名、文件类型和CSV原始内容,无需额外依赖第三方库,用Node.js内置模块即可完成解析和导出。

实现步骤

  • 第一步:将base64字符串解码为UTF-8文本
  • 第二步:通过正则匹配从Content-Disposition头中提取文件名
  • 第三步:剥离表单边界、请求头等冗余信息,提取纯CSV内容
  • 第四步:将CSV内容写入本地文件

完整代码示例

const fs = require('fs/promises');

// 你的base64字符串
const base64 = 'LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTExNDc2MDgwNjM5MTM4ODk4MTc2NTYwNA0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJmaWxlIjsgZmlsZW5hbWU9ImNoYXJ0T2ZBY2NvdW50LmNzdiINCkNvbnRlbnQtVHlwZTogdGV4dC9jc3YNCg0K77u/QWNjb3VudE51bWJlcixBY2NvdW50TmFtZSxEZWR1Y3RhYmlsaXR5DQoxMTExLHRlZWUsMTAwDQoyMjIyMix0ZXN0LDEwMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTExNDc2MDgwNjM5MTM4ODk4MTc2NTYwNC0tDQo=';

async function extractAndSaveCsv() {
  // 解码base64为文本
  const formContent = Buffer.from(base64, 'base64').toString('utf8');
  
  // 提取文件名
  const filenameMatch = formContent.match(/filename="([^"]+)"/);
  if (!filenameMatch) {
    throw new Error('未找到文件名信息');
  }
  const filename = filenameMatch[1];

  // 提取表单边界
  const boundary = formContent.split('\r\n')[0];
  // 分割得到文件块内容
  const fileBlock = formContent.split(boundary)[1];
  // 分割请求头和CSV内容
  const [, csvRaw] = fileBlock.split('\r\n\r\n');
  // 清除末尾的边界标识和换行
  const csvContent = csvRaw.trimEnd().replace(/-+$/, '').trimEnd();

  // 写入文件
  await fs.writeFile(filename, csvContent, 'utf8');
  console.log(`文件已保存:${filename}`);
}

extractAndSaveCsv().catch(console.error);

注意事项

  • 运行代码后会在当前目录生成chartOfAccount.csv文件,内容和原文件完全一致,保留原有UTF-8 BOM头
  • 如果有大批量同类解析需求,可以引入formidable等专门的multipart表单解析库简化代码,降低边界情况处理成本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:27:04