我强烈建议不要从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