在Meteor中使用图像集

时间:2014-04-18 07:16:43

标签: javascript mongodb meteor meteorite meteor-blaze

我正在构建一个Meteor应用,通过https://github.com/crazytoad/meteor-collectionapi

的HTTP请求与桌面客户端进行通信

桌面客户端以不规则的时间间隔生成图像,我希望Meteor网站只显示最近生成的图像(理想情况下是实时显示)。我最初的想法是使用base64 imagedata对单例集合使用PUT请求,但我不知道如何将这些数据转换为Web浏览器中的图像。注意:图像都非常小(远小于1 MB),因此使用gridFS应该是不必要的。

我意识到这个想法可能完全错误,所以如果我完全走错了路,请提出更好的行动方案。

1 个答案:

答案 0 :(得分:3)

您需要编写一个中间件来为您的图像提供适当的MIME类型。例如:

WebApp.connectHandlers.stack.splice (0, 0, {
  route: '/imageserver',
  handle: function(req, res, next) {

    // Assuming the path is /imageserver/:id, here you get the :id
    var iid = req.url.split('/')[1];

    var item = Images.findOne(iid);

    if(!item) {
      // Image not found
      res.writeHead(404);
      res.end('File not found');
      return;
    }

    // Image found
    res.writeHead(200, {
      'Content-Type': item.type,
    });
    res.write(new Buffer(item.data, 'base64'));
    res.end();

  },

});