Отображение изображения в GridFS

Я использую gridfs-stream https://github.com/aheckmann/gridfs-stream и в настоящее время я отображаю изображение из gridFS.

При чтении данных он дает мне следующий вывод. Когда я добавляю эти данные к <img src="data:image/jpeg;base64,(data)">, изображение не отображается.

  gfs
// create a read stream from gfs...
.createReadStream({ filename: 'error1.png' })
// and pipe it to Express' response
.pipe(res);

Выходное разрешение: - введите здесь описание изображения

Отредактировано: -

Я пробовал это: -

img.src = 'data:image/jpeg;base64,' + btoa(res);

Выведенный результат: -

<img src="data:image/jpeg;base64,W29iamVjdCBPYmplY3Rd">

Изображение не показано.


person Anup    schedule 06.03.2014    source источник
comment
Я думаю, что ответ представляет собой двоичные данные, а не кодировку base64, поэтому просто попробуйте ‹img src=ссылка для получения данных.   -  person Andrew    schedule 06.03.2014
comment
я экспериментировал .... я скопировал двоичный файл непосредственно из базы данных и добавил его в src, например data:image/jpeg;base64,(data from db) .... и изображение отобразилось.   -  person Anup    schedule 06.03.2014
comment
я попробовал ‹img src=ссылка для получения данных›..... поэтому в src отображается [object Object]   -  person Anup    schedule 06.03.2014
comment
Я вижу, что вы хотите сделать сейчас, прочитать двоичные данные и эхо ‹img, верно? Преобразуйте его в base64 следующим образом: new Buffer('бинарные данные', 'binary').toString('base64') и echo src=data:image/png;base64,(data)   -  person Andrew    schedule 06.03.2014
comment
Используя ссылку src, вам нужна новая страница, которая выводит данные напрямую, поэтому вы можете установить src=new page для вывода двоичных данных изображения.   -  person Andrew    schedule 06.03.2014


Ответы (1)


Я использую файловый поток для демонстрации:

var rstream = fs.createReadStream('test.png');

var bufs = [];

rstream.on('data', function(chunk) {

    bufs.push(chunk);

}).on('end', function() { // done

    var fbuf = Buffer.concat(bufs);

    var base64 = (fbuf.toString('base64'));

    res.send('<img src="data:image/jpeg;base64,' + base64 + '">');
});
person Andrew    schedule 06.03.2014