在html文件中显示存储在MongoDb中的图像

时间:2016-06-25 12:38:12

标签: javascript node.js mongoose ejs

我正在使用Node.js + mongoose + EJS作为视图引擎。

我设法制作了一个简单的发送命令,使用此指南在服务器端检索并发送此图像:

Setup file uploading in an Express.js application using Multer.js

store/display an image in mongodb using mongoose/express

student.findOne({
    'username': req.body.student_username
}, function(err, result) {
    result.img.data = fs.readFileSync(req.file.path);
    result.img.contentType = 'image/png';
    result.save();
    res.contentType(result.img.contentType);
    res.send(result.img.data);
})

然而,我正在努力寻找关于我如何能够呈现页面并将图像放入html中的指导。 我正在使用EJS视图引擎。 任何快速的例子或小费都会受到欢迎。

1 个答案:

答案 0 :(得分:2)

按学生用户名显示图片:

<强> 路由/ profile.js

var userSchema = new Schema({
  username: String,
  img: { data: Buffer, contentType: String }
});
var User = mongoose.model('User', userSchema);

// Get profile picture
router.get('/profile/:userId/picture', function(req,res,next) {
  User.findById( req.params.userId function(err,user) {
      if (err) return next(err);
      res.contentType(user.img.contentType);
      res.send(user.img.data);
  });
});

// Get profile
router.get('/profile/:username', function(req,res,next) {
  User.findOne(
    {'username': req.params.username},
    function(err, result) {
      if (err) return next(err);
      res.render('profile', {
        username: result.username,
        userid: result.id
      });
    });
});

<强> 视图/ profile.ejs

<html><body>
    <h1><%= username %></h1>
    <img src='/profile/<%= userid %>/picture' />
</body></html>