[英]res.set('Content-Type','image/jpg') is not working while serving image in node js
res.set('Content-Type', 'image/jpg') 在節點 js 中為我們提供文件時不起作用。 請看一下代碼,這段代碼有什么問題。 我從數據庫中獲取用戶值和頭像二進制值,但無法在瀏覽器上看到它。
http://localhost:3000/users/5f8930bba34fd3166c1b3f72/avatar 我在本地服務器上點擊了這個 URL
router.get('/users/:id/avatar', async (req,res)=>{
try {
const user= await User.findById(req.params.id)
if (!user || user.avatar){
throw new Error('Avatar not found !!')
}
res.set('Content-Type','image/jpg')
res.send(user.avatar)
} catch (error) {
res.status(404).send()
}
})
以下是我的依賴項:
"dependencies": {
"bcryptjs": "^2.4.3",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongodb": "^3.6.2",
"mongoose": "^5.10.8",
"mongoose-unique-validator": "^2.0.3",
"multer": "^1.4.2",
"validator": "^13.1.17"
}
這是我的用戶模型
const userSchema=new mongoose.Schema({
name:{
type:String,
required:true,
trim:true,
//unique:true,
},
age:{
type:Number,
default:0,
validate(value){
if(value<0){
throw new Error('Age must be positive number')
}
}
},
email:{
type:String,
required:true,
trim:true,
unique:true,
lowercase:true,
validate(value){
if(!validator.isEmail(value)){
throw new Error('Email is invalid')
}
}
},
password:{
type:String,
required:true,
minlength:7,
trim:true,
validate(value){
if(value.toLowerCase().includes('password')){
throw new Error('Password can not contain "password"');
}
}
},
tokens:[{
token:{
type:String,
required:true
}
}],
avatar:{
type:Buffer
}
},{
timestamps:true
})
使用res.setHeader()
res.setHeader('content-type', 'image/jpg');
res.set('Content-Type', 'image/jpg') 和在瀏覽器上顯示圖片之間沒有關系。
首先你應該添加頭像 .. 如果你使用郵遞員使用 Post avatar 發出新請求,那么你可以在瀏覽器中看到它
提示:如果條件應該是錯誤:if (!user || !user.avatar) 而不是 if (!user || user.avatar)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.