如何在node.js中发送多个图像作为响应

时间:2013-04-29 12:15:49

标签: javascript image node.js mongodb

我使用像这样的

在mongodb中存储了更多图像
exports.save = function (input, image, callback)
{
    db.collection("articles", function (error, collection)
    {
      collection.save(input, {safe: true}, callback);
    });
}

我从db中检索了所有图像。

find().toArray(function(err,result)
{
     console.log(result.length)//length is 5
     for(var i=0;i<results.length;i++)
     {
                res.contentType(results[i].imageType);
                res.end(results[i].image.buffer, "binary");
     }
});

如何将此图像转换为二进制文件以及如何将响应发送到client.i已尝试for循环但我得到此错误后无法设置标头后发送res .........如何解决

2 个答案:

答案 0 :(得分:0)

我想,没有办法在一个单一的响应中发送多个图像。但也许您可以尝试在循环中以某种方式合并这些图像,然后发送一个大图像,其中包含N个图像合并在一起。

答案 1 :(得分:0)

我刚遇到类似的问题。您需要将“结果”数组传递给Jade模板(例如)或手动创建包含您找到的图像(而不是数据)的HTML页面 - 而不是实际图像的虚拟链接。

res.render('image_list.jade', {results:results});

然后您的模板可能如下所示:

block content
  div.container
   header
    h1 Images in a list
   div#images
    - each result in results
   div.myimage
     img(src='http://localhost:3000/oneimage'+result._id)

在您的app.js中,您需要提供一条路线/oneimage,它会像您在代码中一样返回单个图片(数据)(即将findAll(...)替换为findOne(...., id, ...) < / p>