1

MongoDBから画像を取得して表示するための良い方法を探しています。たとえば、プロフィール写真を取得してプロフィールページに表示するには、次のようにします。

自己紹介ページ

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タグはデータベースからユーザーの写真を取得するためにサーバーにリクエストを送り返します。画像をBinDataとしてMongoDBに保存しています。GridFS写真が小さいと思いますので 使用しません。

これを行うためのより良い方法はありますか?を使用して画像データを直接ヒスイビューに送信しようとしましたres.render('users/show', {picture: data})が、imgタグがそれを気に入らなかったため、理由がわかりません。このアプローチは行き止まりですか?

コメント/提案をいただければ幸いです。ありがとう!

4

1 に答える 1

0

翡翠ビューに画像データを直接送信すると、

a)画像データをbase64でエンコードしました

b)接頭辞「data:」

しかし、私はあなたがこのようにすることをお勧めしません、あなたは本質的にあなたのhtmlの画像をインライン化します。

代わりに、画像/アバターを処理するための別のルートを作成する必要があります。

たとえば、アバターの画像ソースは次のようになります。

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

ブラウザがこの画像を要求すると、mongoから取得した画像データで応答します。

于 2012-10-02T18:17:57.033 に答える