我正在构建一个Meteor应用,通过https://github.com/crazytoad/meteor-collectionapi
的HTTP请求与桌面客户端进行通信桌面客户端以不规则的时间间隔生成图像,我希望Meteor网站只显示最近生成的图像(理想情况下是实时显示)。我最初的想法是使用base64 imagedata对单例集合使用PUT请求,但我不知道如何将这些数据转换为Web浏览器中的图像。注意:图像都非常小(远小于1 MB),因此使用gridFS应该是不必要的。
我意识到这个想法可能完全错误,所以如果我完全走错了路,请提出更好的行动方案。
答案 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();
},
});