Node.js + Sails.js。特定のディレクトリの画像が見つからない場合はカスタムイメージ

StackOverflow https://stackoverflow.com//questions/21006667

  •  21-12-2019
  •  | 
  •  

質問

ユーザーが/ images/avatars/thumbnails/id.pngにアクセスした場合、いくつかの画像を返す方法はありますか?(アバターなしのユーザーの場合)

役に立ちましたか?

解決

これを行う方法はいくつかあります。気になる最も簡単なことは、

のようなルートです。
// in config/routes.js
'/images/avatars/thumbnails/:thumb': 'AvatarController.show'
.


// controllers/AvatarController.js
var fs = require('fs');
show: function(req, res, next) {
  var path = sails.config.appPath+'/assets/images/avatars/thumbnails/'+req.param('thumb');
  fs.exists(path, function(exists) {
     if (exists) return next();
  }
  fs.createReadStream(sails.config.appPath+'/assets/images/defaultAvatar.png').pipe(res);
}
.

これは、アバターサムネイルの要求を処理するためのカスタムアクションを設定します。ファイルが見つかった場合は、静的アセットのデフォルトのアクションに戻ります(クライアントに送信)。ファイルが存在しない場合は、デフォルトのアバターファイルをクライアントにストリーミングします。

他のヒント

Node.js FSモジュール

を使用できます。
var fs = require('fs');
var imagePath = '/images/avatars/thumbnails/ID.png';
fs.open(imagePath, 'r', function(err,fd){
   if(err) imagePath = 'path/to/custom/image.png';
   else console.log('user image exists');
});
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top