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

使用NestJs与Multer上传文件到AWS S3报buffer未定义错误如何解决

问题排查方案

1. 修复Axios请求配置错误

你当前的Axios传参写法错误,请求头需要放到config的headers字段下,直接展开到config根层级会导致请求头不生效,后端无法正确解析multipart/form-data格式的请求体,自然拿不到上传的文件。
修复后的请求代码:

let formData = new FormData();
formData.append("file", fs.createReadStream(path.join(__dirname, `./uploads/${uploadedFileName}.jpg`)), file.data.originalname);
const response = await axios.post("my_url", formData, {
  headers: {
    ...formData.getHeaders(),
  }
});

2. 确认Nest端依赖与配置完整

  • 确保你已经安装了multer的类型声明包:npm i -D @types/multer,缺失类型声明可能会导致文件解析逻辑异常
  • FileInterceptor默认使用内存存储,文件才会带有buffer属性;如果你自行配置了磁盘存储,需要改回内存存储,或者读取磁盘上的临时文件内容再上传到S3

3. 校验字段匹配与文件有效性

  • 确认后端FileInterceptor('file')的第一个参数,和前端formData.append的第一个参数完全一致,大小写、拼写都不能有偏差
  • 确认你读取的本地文件路径正确、有读取权限,避免fs.createReadStream返回空流,导致没有有效文件上传
  • 可以在后端接口内注入Request对象,打印req.file确认是否真的没有拿到上传文件,快速定位是解析问题还是前端上传问题

4. 确认Node环境下的FormData依赖

如果你是在Node.js服务端发送的请求,需要单独安装form-datanpm包,不能直接使用浏览器环境的FormData API,否则会导致formdata序列化异常,后端无法解析。安装命令:npm i form-data


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:57:03