Node.js + парус.Пользовательское изображение, если изображение в определенном каталоге не найдено

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

  •  21-12-2019
  •  | 
  •  

Вопрос

Есть ли способ сделать некоторое изображение возвращением, если пользователь доступ к /images/avatars/thumpnails/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