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

前端通过Dropzone上传文件至Amazon S3时遇Unsupported body payload object错误

解决AWS S3上传报错:Unsupported body payload object

哎,这个问题我之前也碰到过!你现在遇到的Unsupported body payload object报错,核心原因是你传给AWS SDK的不是真正的Node.js Buffer实例——看你后端收到的buffer是{ type: 'Buffer', data: [Array] },这其实是Buffer被JSON序列化后的普通对象,不是原生Buffer,SDK根本不认它。

解决步骤:

  • 第一步,把序列化后的buffer对象转成原生Buffer:

    // 从序列化的buffer对象中取出data数组,生成真正的Buffer实例
    const fileBuffer = Buffer.from(data.patientfile.file.buffer.data);
    
  • 第二步,修正上传参数(注意Key用原始文件名避免覆盖):

    var params = { 
      Bucket: myBucket, 
      Key: data.patientfile.file.originalname, // 用originalname代替fieldname,防止不同文件重名覆盖
      Body: fileBuffer 
    };
    
  • 第三步,重新执行上传操作:

    s3.upload(params, function (err, data) { 
      if (err) { 
        console.log("上传失败:", err); 
      } else { 
        console.log("上传成功!文件地址:", data.Location); 
      } 
    });
    

补充说明:

为什么会出现这个序列化后的buffer?因为前端用Dropzone传文件到后端时,如果后端框架自动将请求体解析成JSON格式,原生Buffer会被转换成{type: 'Buffer', data: [Array]}这种可序列化的普通对象,而不是保留Buffer实例。所以必须手动将它转成原生Buffer,AWS SDK才能正常处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:45:41