使用Meteor.js,我如何提供任意HTTP响应,例如。图像还是PDF?
示例1 - 我需要生成PDF报告,我无法将其存储在公共场所或第三方服务器上。或者,可以响应HTTP GET实时生成报告。
示例2 - 如果我有一个网址:
/images/myimage.png
我想在服务器上检测到该请求,从MongoDB中读取图像,并使用正确的标头提供它,因此它可以与img标签一起使用,即。
<img src="/images/myimage.png">
我不想将图像存储在/ public /目录中,这样我就可以更准确地控制所提供的内容及其权限。
编辑我还能够使用Iron Router获得一个基本示例。
ImageController = RouteController.extend({
run: function() {
var f = fs.readFileSync("/path/to/image.png");
var res = this.response;
res.writeHead(200, { "content-type": "image/png" });
res.write(f);
res.end();
}
});
Router.map(function() {
Router.route("images", {
path: "/images/image.png",
where: "server",
controller: ImageController // Note - cannot use string here - Iron Router has a dependency on window
});
});
答案 0 :(得分:0)
您可以使用filepicker。在filepicker中,上传图像保存在存储桶(云)中并返回该图像的URL。您可以将URL保存在mongo数据库中。当您想要使用该图像时,只需使用<img src="{{saveurl}}" >
。
有关更多帮助,请参阅文档https://developers.inkfilepicker.com/docs/web/
答案 1 :(得分:0)
您可以使用中间件:
在任何节点应用中编写响应代码WebApp.connectHandlers.stack.splice (0, 0, {
route: '/path/to/the/file',
handle: function(req, res, next) {
res.writeHead(200, {
'Content-Type': ...ITEM TYPE... ,
});
res.write( ...ITEM DATA... );
res.end();
},
});