使用Postman获取商品图片失败:媒体类型无效/不支持求解决方案
问题:Postman获取商品图片时提示“unsupported or invalid media type”错误
我尝试通过Postman获取商品图片,即使已在请求头中添加Content-Type: application/json,仍提示“unsupported or invalid media type”错误,相关代码如下:
export const readPhotoController = async(req,res) => { try{ const product = await Product.findById(req.params.pid).select("photo") console.log(product.photo.data) if(product.photo.data){ res.set("Content-type", product.photo.content) return res.status(200).json(product.photo.data) } } catch(err){ console.log(err) res.status(500).json({ success: false, message: "Error in fetching photo", err }) } }
解决方案
- 核心问题:用
res.json()返回图片二进制数据是错误的。json()方法会把数据序列化为JSON格式,但图片是二进制流,应该用res.send()返回原始二进制内容。 - 修正代码:将返回图片的代码行替换为:
return res.status(200).send(product.photo.data) - 请求头调整:移除Postman中手动添加的
Content-Type: application/json请求头。你的代码已经通过res.set("Content-type", product.photo.content)设置了正确的图片MIME类型(比如image/jpeg、image/png),Postman会自动识别响应格式,手动设置JSON类型反而会导致请求格式不匹配。 - 额外验证:确认
product.photo.content字段存储的是正确的图片MIME类型,而非无效值。
内容的提问来源于stack exchange,提问作者Dom
相关产品推荐
相关产品推荐

