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

NodeJS中Express+Multer收发图片Buffer时req.file为undefined如何解决

问题修复方案

你代码里共有三处配置错误,按优先级修改即可:

  • 字段名不匹配
    服务端upload.single('image')指定了仅解析名为image的文件字段,但客户端formData里的文件字段名为file,字段名对不上导致Multer识别不到文件,req.file返回undefined。
    修复二选一:
    1. 把服务端代码改为upload.single('file')
    2. 把客户端formData里的file: buffer改为image: buffer
  • 手动设置了错误的请求头
    multipart/form-data请求头必须附带boundary边界符参数才能正常解析表单内容,你手动设置了该请求头但没有加boundary参数,反而覆盖了request库自动生成的合法请求头。
    修复方法:直接删掉客户端POST请求配置里的headers块即可,request库传入formData参数时会自动生成带正确boundary的请求头。
  • 冲突的端口配置
    客户端POST请求的url已经明确写了端口5050,额外加的port: 443属于冲突无效配置,建议直接删掉避免请求异常。

修正后客户端示例代码

var buffer = await new Promise( (rs,rj) =>{
     request({
          url : 'domain.com/someimage.jpeg',
          method : 'get',
          encoding: null
      },function(error, response, body){
            rs(body)                 
      })
})

request({
   method : 'POST',
    url : 'http://localhost:5050/upload',
    formData : {
         file_name : 'name.jpg',
         image : buffer // 字段名和服务端upload.single的参数保持一致
    }
})

修改完成后服务端就能正常打印req.file的内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:06:04