Сервер изображений, использующий node.js и фреймворка Ni

#node.js

#node.js

Вопрос:

Я использую фреймворк Ni (который, в свою очередь, использует Quip) для узла, внутри которого есть контроллер, называемый assets, с методами для изображений, файлов и т.д.

Метод images будет извлекать и отображать изображения при посещении domain.com/assets/images/imagename.png

Однако он отображает исходные данные для изображения, а не само изображение.

Я установил заголовки и тип контента. Код, который у меня есть, является:

 var Ni      = require('../lib/ni'),
    mime    = require('mime'),
    fs      = require("fs");

var AssetsController = function(){
    this.images  = function(req, res, next, fileName) {
        var path    = './assets/images/' fileName;

        var image   = fs.readFile(path, "binary", function(error, data){
            if(error) throw error;

            res.writeHead(200, {
                'Content-Type' : mime.lookup(path),
                'Content-Transfer-Encoding' : 'binary'
            });
            res.send(data);
        });
    }
}


module.exports = new AssetsController();
  

Ответ №1:

Я использую этот фрагмент кода при обслуживании изображений, и он отображает их правильно:

 fs.readFile(path, function(err, data){
    res.writeHead(200, {"Content-Type": "image/png"});
    res.write(data, "binary");
    res.end();
});
  

Комментарии:

1. У меня это не сработало из-за используемого мной фреймворка Ni, однако я решил проблему с помощью node-static