我知道 Mongodb 可以通过两种方式存储图像。
- 通过将图像存储为二进制在常规文档中
- 通过 Gridfs 管理更大的图像。
为简单起见,并且因为我计划服务器的图像很小,所以我将选择选项 1。
为了将图像提供给浏览器,我使用的是nodejs。
我的问题是这会有多困难?如何将二进制数据转换为浏览器可以理解的实际图像?涉及什么类型的编码?
您能给我指出网络上其他地方的教程/示例吗?
顺便说一句,我知道出于性能原因这可能不是一个好主意,我计划在服务后缓存图像。我只是想完全避免使用文件系统。
我强烈建议不要从 MongoDB 提供图像。
最好将它们存储在静态文件存储 (S3) 上,并可能将路径保留在 MongoDB 中。
您可能会使用 base64 编码将文件放入 mongodb 中:http://www.greywyvern.com/code/php/binary2base64/ 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()})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)