[英]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.