我強烈建議不要從MongoDB提供圖片。
將它們存儲在一個靜態文件存儲(S3)上,並在MongoDB中保留路徑會更好。
你可能會使用base64編碼把文件分成的MongoDB:http://www.greywyvern.com/code/php/binary2base64/(或只是BASE64 shell實用程序)。
如果您只是使用常規文檔,那麼性能成本相對較低(只要緩存很好)。如果您使用的是具有GridFS和常規文檔的混合數據庫,那麼您的服務器上將需要大量RAM - GridFS查詢的運行方式與文檔查詢完全不同。
轉換圖像可能的工作是這樣的:
var base64Data = imagefile.replace(/^data:image\/png;base64,/,""),
var dataBuffer = new Buffer(base64Data, 'base64');
// below line won't actually work but it's something along the lines of what you want:
db.foo.insert({magic: 123, etc... img: dataBuffer.toString()})
這是非常有幫助的。現在我有一個想法如何存儲圖像。你能否擴大你的答案,包括我可以如何提供圖像? – jamjam 2012-07-19 22:01:16
我的意思是這取決於你如何查詢他們? 'var c = db.foo.find({imgname:「something」}; console.log(c.img)' 這是你的服務器所以...我不完全確定如何告訴你服務的東西 - 我假設你正在使用節點? – ranman 2012-07-19 23:15:09
查詢不是問題,我可以獲取數據。但是,如何處理這些二進制數據以使Web瀏覽器將其呈現爲普通圖像? – jamjam 2012-07-19 23:32:24