Node.js: раздача бинарных файлов

Очень часто с веб-сервера требуется отправить браузеру картинку с динамически заданными характеристиками. Пример — аватарка пользователя, в случае отсутствия которой выдается картинка с серым силуэтом. Вот как это можно сделать:


app.get('/getAvatar', function (req, res) {
	var uid =  req.query.uid;
	['jpeg', 'png', 'gif'].forEach(function(item){
	   var fn = getPath(uid, item);
	   if(fs.existsSync(fn)){
		   var img = fs.readFileSync(fn);
                   res.writeHead('200', {'Content-Type': 'image/' + item});
	           res.end(img, 'binary');	
		   return;   
	   }
	}); 
        res.writeHead('200', {'Content-Type': 'image/png'});
        var img = fs.readFileSync('/path/to/nobody.png');
        res.end(img, 'binary');	
});

function getPath(uid, ext){
 // TODO ...
 return hz;
}


Здесь getPath() — абстрактная функция, возвращающая путь до файла-картинки. Ее можно конкретизировать в зависимости от ситуации.

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.