Image 如何在AngularJS网页中通过Node.js显示存储在Mongodb中的图像(PNG)文件?

Image 如何在AngularJS网页中通过Node.js显示存储在Mongodb中的图像(PNG)文件?,image,node.js,angularjs,mongodb,png,Image,Node.js,Angularjs,Mongodb,Png,我能够使用类似于以下代码的方法在MongoDB中存储png图像: // server.js q.desc.data = fs.readFileSync(__dirname + '/logo.png'); q.desc.contentType = 'image/png'; 但是,我无法使图像显示在AngularJS控制的网页中。可以在页面内检索图像数据,但以下行显示为文本“”,可能是因为BSON格式与原始数据不同 // core.js (on the client Angular side) $

我能够使用类似于以下代码的方法在MongoDB中存储png图像:

// server.js
q.desc.data = fs.readFileSync(__dirname + '/logo.png');
q.desc.contentType = 'image/png';
但是,我无法使图像显示在AngularJS控制的网页中。可以在页面内检索图像数据,但以下行显示为文本“”,可能是因为BSON格式与原始数据不同

// core.js (on the client Angular side)
$scope.q.desc.data = '<img src="data:image/png;base64,' + $.base64.encode($scope.q.desc.data) + '" />';

但是我们如何将这个图像嵌入到网页中呢?Web浏览器无法直接下载/缓存图像,因为图像没有URL。它住在MongoDB里面。谢谢

不清楚问题是什么,因为您没有包含太多代码。我也不知道你为什么要将图像嵌入HTML而不是让浏览器自己下载/缓存它们?你可以使用base64编码在数据库中存储为
String
,只需打印值即可解码。谢谢,WiredPairie。浏览器无法直接下载/缓存映像,因为映像存储在MongoDB中。没有指向图像的直接URL。它通过一个JSON文档传递到客户端页面,以澄清@wiredPairie提出的观点。与其尝试在您的响应中填充二进制内容,不如有一个路由来响应图像请求,然后从mongo获取数据并提供服务。所以你的url是你代码中的一条路径,在浏览器下载/缓存中一切正常。明白吗?谢谢,尼尔。是的,单独发送图像是可行的。我仍然很好奇,是否有办法将所有二进制内容与HTML页面一起放在一个响应中,从而使其正常工作。这可能更有效,因为这可以在一个MongoDB查询中完成,而不是在N+1个MongoDB查询中完成(N是图像的数量)。
// server.js
res.contentType(doc.desc.contentType);
res.send(doc.desc.data);