簡體   English   中英

res.set('Content-Type','image/jpg') 在節點 js 中提供圖像時不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM