Image 将图像存储在Mongodb中,并使用Nodejs为其提供服务
我知道Mongodb可以通过两种方式存储图像Image 将图像存储在Mongodb中,并使用Nodejs为其提供服务,image,node.js,mongodb,Image,Node.js,Mongodb,我知道Mongodb可以通过两种方式存储图像 在常规文档中,将图像存储为二进制 通过Gridfs管理较大的图像 为了简单起见,并且因为我计划发送给服务器的图像很小,我将选择选项1 为了将图像提供给浏览器,我使用nodejs 我的问题是这有多困难?如何将二进制数据转换为浏览器能够理解的实际图像?涉及什么类型的编码 你能给我指一下网上其他地方的教程/例子吗 顺便说一句,我知道出于性能原因,这可能不是一个好主意,我计划缓存一次提供的图像。我只是想避免使用文件系统。我强烈建议不要使用MongoDB提供的
顺便说一句,我知道出于性能原因,这可能不是一个好主意,我计划缓存一次提供的图像。我只是想避免使用文件系统。我强烈建议不要使用MongoDB提供的图像 最好将它们存储在静态文件存储(S3)中,并可能将路径保留在MongoDB中
您可能会使用base64编码将文件放入mongodb:(或者只是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()})
要让web浏览器呈现内容,只需发送正确的标题和响应正文 因此,假设您正在尝试渲染PNG图像,您的mimetype将是
image/PNG
,然后将图像文件字节添加到响应正文中
然后浏览器会将此响应解释为PNG类型的图像,并适当地渲染它,这非常有用。现在我知道了如何存储图像。你能把你的答案扩大到包括我如何提供这些图片吗?我的意思是这取决于你是如何询问它们的
var c=db.foo.find({imgname:“something”};console.log(c.img)
这是您的服务器,所以…我不完全确定如何告诉您服务内容--我假设您使用的是node?查询不是问题,我可以获取数据。但是如何处理这些二进制数据以使web浏览器将其呈现为普通图像?