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

从S3保存图片遇加密格式问题,寻求可查看的解决方法

问题解决:S3下载图片后显示为加密串无法查看

问题根源

你的下载代码错误地将S3返回的二进制图片数据转换成base64字符串并写入文件,导致保存的文件是文本格式的base64编码内容,而非原始二进制图片数据。上传代码本身无问题,因为你直接传入了Buffer类型的文件内容到S3。

修复方案

修改下载代码,直接将S3返回的Body(Buffer类型)写入文件,无需转换base64:

const params = { Bucket: bucketName, Key: key, ResponseContentType: "image/png" };
const { Body } = await s3.getObject(params).promise();
if (!Body) {
    throw new Error('No data found for the S3 object.');
}
const directoryPath = path.dirname(localFilePath);

fs.mkdirSync(directoryPath, { recursive: true });
// 直接写入Buffer,无需转base64
fs.writeFileSync(localFilePath, Body);
console.log(`Downloaded ${path.basename(key)}`);

额外说明

  • 调用Body.toString('base64')会把二进制图片数据转换成可打印的base64字符串,此时写入文件的是该字符串文本,而非图片原始二进制流,系统自然无法识别为图片文件。
  • 上传时传入的是Buffer类型的fileContent,S3会正确保存二进制数据,因此问题完全出在下载环节的处理逻辑上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:37:02