Node.JS + Sails.JS.Imagem personalizada se a imagem no diretório específico não for encontrada

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

  •  21-12-2019
  •  | 
  •  

Pergunta

Existe alguma maneira de fazer com que alguma imagem retorne se o usuário acessar /images/avatars/thumbnails/ID.png e ela não existir?(para usuários sem avatares)

Foi útil?

Solução

Há algumas maneiras de fazer isto.O mais simples que vem à mente é uma rota como:

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

Isso define uma ação personalizada para lidar com solicitações de miniaturas de avatar.Se o arquivo for encontrado, ele retornará à ação padrão para ativos estáticos (enviando-o ao cliente).Se o arquivo não existir, ele transmitirá seu arquivo de avatar padrão para o cliente.

Outras dicas

você pode usar o módulo 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');
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top