node.js + sails.js.사용자 정의 이미지 특정 디렉토리의 이미지를 찾을 수없는 경우
문제
사용자가 액세스하는 / 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);
}
.
이것은 Avatar Thumbnail에 대한 요청을 처리하는 사용자 정의 작업을 설정합니다.파일이 발견되면 정적 자산 (클라이언트로 보내기)의 기본 동작으로 다시 떨어집니다.파일이 없으면 기본 아바타 파일을 클라이언트로 스트리밍합니다.
다른 팁
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');
});
. 제휴하지 않습니다 StackOverflow