簡體   English   中英

Meteor.js - 直接從MongoDB提供圖像?

[英]Meteor.js - Serve image directly from MongoDB?

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

您可以使用filepicker。 在filepicker中,上傳圖像保存在存儲桶(雲)中並返回該圖像的URL。 您可以將URL保存在mongo數據庫中。 當您想要使用該圖像時,只需使用<img src="{{saveurl}}" > 有關更多幫助,請參閱文檔https://developers.inkfilepicker.com/docs/web/

您可以使用中間件在任何節點應用程序中編寫響應代碼:

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

  },
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM