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

NodeJS读取Excel到Buffer后上传AWS S3文件损坏问题求助

问题分析与解决

你的问题出在用utf-8编码读取二进制文件上。Excel是二进制格式的文件,不是纯文本,当你用utf-8编码读取时,Node.js会把原始二进制字节尝试解析成UTF-8文本,这个过程会破坏原始数据(比如无法解析的字节会被替换成占位符),最终生成的Buffer和原文件完全不一致,上传到S3后自然无法正常打开。

修正方案

直接以二进制模式读取文件,readFileSync在不指定编码参数时,会直接返回原始的Buffer,不需要额外转换:

import { fileURLToPath } from 'url';
import path from 'path';  
import { readFileSync } from 'fs'; // 补充导入readFileSync

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export const readFileAsBuffer = (file:string): Buffer => {
    // 不指定编码,直接读取二进制数据返回Buffer
    return readFileSync(path.resolve(__dirname, file));
}

额外说明

所有二进制类型文件(Excel、图片、ZIP压缩包等)都必须以二进制方式读取,不能使用文本编码(如utf-8、ascii),否则会篡改原始字节结构,导致文件损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:15:11