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

HTML→NodeJS→S3上传图片:文件大小异常且无法打开

问题分析与解决方案

你遇到的图片上传S3后体积变大、无法打开的问题,核心原因是上传时未指定正确的Content-Type,导致AWS将二进制图片数据当作文本格式处理,破坏了原始二进制结构。

具体原因

本地图片是二进制格式,大小111KB,但上传S3时如果缺失Content-Type参数,S3会默认使用text/plain类型。此时SDK会把file.buffer(二进制数据)转成UTF-8字符串上传,这个转换过程会让非UTF-8兼容的字节被替换,导致文件体积膨胀、数据损坏。

修复方案

在PutObjectCommandInput中添加Content-Type字段,直接使用Multer返回的文件MIME类型即可:

const uploadParams: PutObjectCommandInput = {
    Bucket: this.bucket,
    Key: file.originalname,
    Body: file.buffer,
    ContentType: file.mimetype, // 新增该行,指定正确的文件类型
};

额外验证点

  • 确认Multer配置未强制设置encoding(默认值为null,即二进制存储,不要修改为utf-8)
  • 你已经验证过file.buffer写入本地可正常打开,说明buffer本身无问题,只需聚焦S3上传参数修正

修改后重新上传,S3会正确识别图片类型,保留原始二进制数据,文件大小将和本地一致,下载后可正常打开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:26:17