2012-10-01 37 views
1

我正在寻找从MongoDB中检索图像并显示它们的好方法。例如,检索资料照片和个人资料页上显示它,这是我当前如何做它:ExpressJS:从MongoDB中检索图像并在Jade中显示

的个人资料页

block content 
    h1= session.user.name 
    img(src='/avatars') 

路线

exports.avatars = (req, res) -> 
    users.find req.session.user, (err, user) -> 
    if user 
     res.writeHead('200', {'Content-Type': 'image/png'}) 
     res.end(user.avatar.data, 'binary') 
    else 
     res.locals.flash = err 
     res.render('index', {title: 'Home'}) 

基本上我呈现配置文件页面,并且img标记将请求发送回服务器以从数据库中提取用户的图片。我在MongoDB中将图像保存为BinData。不使用GridFS,因为我期望照片很小。

有没有更好的方法来做到这一点?我试图使用res.render('users/show', {picture: data})将图像数据直接发送到玉石视图,但img标签不像这样,我不清楚为什么。这种方法是死路一条吗?

任何意见/建议将不胜感激。谢谢!

回答

0

直接发送图像数据,以玉视如果

一)你base64编码的图像数据

B)前缀会工作 “的数据:”

但我会不建议你这样做,你基本上在你的html中插入图像。

你应该创建一个单独的路线来处理你的图像/头像。

例如,对于您的头像图片来源应该是像

img(src='http://mydomain.com/avatars/user1.jpg') 

当浏览器请求这个图片你再从蒙戈检索到的图像数据进行响应。

+0

感谢您的回答。我明白你对一张照片所说的话,但如果我需要显示一系列图片和文字,该怎么办?我如何将所有这些信息提供给我的观点? – aeyang

+0

好吧,那么你需要在任何需要显示的文本旁边加载img标签。这些标签中的每一个都会从图像/头像路径中请求适当的图像。 – saeed

+0

但是当页面呈现时,我不知道会有多少图片。例如,用户可能在DB中存储了许多他的朋友的照片,并且我想在他的个人资料页面上显示这些照片... – aeyang

相关问题