Express.js如何向其他服务上传图片?req.file为undefined问题排查
问题根因
- 核心错误是axios请求头配置的键名写错:axios的请求配置中,请求头对应的键是小写
headers,你代码中写的是大写开头的Headers,该配置会被axios直接忽略。 - 你通过
formData.getHeaders()生成的带boundary参数的multipart/form-data类型请求头没有被实际发送,axios默认使用了application/x-www-form-urlencoded作为内容类型,服务端的multer中间件无法识别该格式的文件上传请求,所以解析不到上传的文件,req.file为undefined。 - Postman发送上传请求时会自动携带正确的
multipart/form-data请求头,所以可以上传成功。
修复方法
修改/toOther路由中axios请求的配置,把大写的Headers改为小写headers即可:
try { let result = await axios.post( `http://localhost:13003/file`, formData, // 修正配置键名为小写headers {headers: headerHere} ) res.status(200).json(result.data) } catch (err) { console.log('file/toOther err', err) }
内容的提问来源于stack exchange,提问作者niddddddfier
相关产品推荐
相关产品推荐

