Node.js/Express+Cloudinary图片上传API在Postman测试时无响应的诊断与排查求助
Node.js/Express+Cloudinary图片上传API在Postman测试时无响应的诊断与排查求助
大家好,我最近在做一个Node.js/Express后端API,目标是把用户上传的图片传到Cloudinary存储,但在Postman里测试这个接口的时候遇到了大问题——接口完全没有响应,连req.body.data对应的file都打印不出来,endpoint根本不工作,我已经卡了好一会儿了,想请各位帮忙看看哪里出问题了。
我的后端上传API代码
这是我写的上传接口代码,用了asyncHandler来处理异步,逻辑是拿到文件后传到Cloudinary,然后更新用户的头像URL:
app.post( '/api/upload/:id', asyncHandler(async (req, res) => { try { const file = req.body.data // 这里根本打印不出file,请求就卡着 console.log(file) const uploadResponse = await cloudinary.uploader.upload( file.tempFilePath, { folder: 'profile', upload_preset: 'my_media', use_filename: true, } ) console.log(uploadResponse) const { secure_url } = uploadResponse const newUser = await userModal.findByIdAndUpdate(req.params.id, { image: secure_url, }) newUser.image = secure_url res.status(201).json(newUser) } catch (error) { res.status(400).json(error) } }) )
Postman测试方式
我在Postman里是这么测试的:选择POST请求,URL填http://localhost:xxx/api/upload/用户ID,然后在Body里选了form-data,新增一个键为data的字段,类型选File,然后选中本地的一张图片文件,发送请求后就一直处于加载状态,没有任何响应返回,后端console里也看不到我加的console.log(file)输出。
已尝试的操作
我之前单独写过一段Node.js代码直接上传图片到Cloudinary,是可以成功的,说明Cloudinary的配置(比如API密钥、cloud name这些)是没问题的,但集成到Express API里就不行了。
想请教各位:
- 是不是我的API代码里处理文件的方式有问题?比如是不是没用到处理multipart/form-data的中间件?
- Postman的测试步骤有没有哪里错了?
- 还有哪些可能的原因会导致接口无响应?
备注:内容来源于stack exchange,提问作者JALAL MOHAMMED RAISAN
相关产品推荐
相关产品推荐

