Node.JS + Sails.JS。如果未找到特定目录中的图像,则自定义图像

时间:2014-01-08 21:14:54

标签: node.js sails.js

如果用户访问/images/avatars/thumbnails/ID.png并且它不存在,有没有办法让一些图像返回? (对于没有头像的用户)

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。想到的最简单的是一条路线:

// 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);
}

这会设置自定义操作来处理对头像缩略图的请求。如果找到该文件,它将回退到静态资产的默认操作(将其发送到客户端)。如果该文件不存在,它会将您的默认头像文件流式传输到客户端。

答案 1 :(得分:0)

您可以使用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');
});