Meteor.js - 直接从MongoDB提供图像

Meteor.js - Serve image directly from MongoDB?

本文关键字:MongoDB 图像 js Meteor      更新时间:2023-09-26

使用 Meteor.js,我如何提供任意的 HTTP 响应,例如图像或 PDF?

示例 1 - 我需要生成 PDF 报告,我无法将其存储在公共/或第三方服务器上。或者,可以实时生成报告以响应 HTTP GET。

示例 2 - 如果我有一个类似这样的网址:

/images/myimage.png

我想在服务器上检测该请求,从MongoDB读取图像,并使用正确的标头为其提供,因此它可以与img标签一起使用,即。

<img src="/images/myimage.png">

我不想将图像存储在/public/目录中,这样我就可以更好地控制所提供的内容以及如何获得许可。

编辑我还能够获得一个使用铁路由器工作的基本示例。

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
  });
});

您可以使用中间件像在任何节点应用程序中一样编写响应代码:

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();
  },
});

您可以使用文件选取器。在文件选择器中,上传的图像保存在存储桶(云)中,并返回该图像的URL。您可以将 url 保存在 mongo 数据库中。当您想使用该图像时,只需使用 <img src="{{saveurl}}" > .有关更多帮助,请参阅文档 https://developers.inkfilepicker.com/docs/web/