我正在尝试提供存储在Mongo文档中的图像。我正在使用express,express-resource和mongoose。
数据是JPG,存储在我的架构的Buffer字段中。看起来它正确到达那里,因为我可以使用cli读取数据。
然后我运行一个查找,抓住该字段并尝试发送它。见代码:
res.contentType('jpg');
res.send(img);
我认为这不是存储问题,因为我在这里执行相同的操作:
var img = fs.readFileSync(
__dirname + '/../../img/small.jpg'
);
res.contentType('jpg');
res.send(img);
在浏览器中显示图像(作为损坏的图标)。
我想知道这是否是express-resource的问题,因为我将格式设置为json,但是我确实在发送数据之前覆盖了内容类型。
划伤头
答案 0 :(得分:2)
我自己设法解决了这个问题。好像我使用正确的方法从express发送数据,但没有正确存储(棘手!)。
为了将来参考任何处理图像下载并在Buffers中管理它们的人,这里有一些使用请求包的示例代码:
request(
{
uri: uri,
encoding: 'binary'
},
function (err, response, body)
{
if (! err && response.statusCode == 200)
{
var imgData = new Buffer(
body.toString(),
'binary'
).toString('base64');
callback(null, new Buffer(imgData, 'base64'));
}
}
);
在Mongo中,您需要设置类型为Buffer的文档属性才能成功存储它。似乎这个问题是由于我如何将它保存到Mongo中。
希望将来节省一些时间。 =)