从Mongo发出已保存的Buffer

我正在尝试提供已经存储在Mongo文档中的图像。 我使用快递,快递资源和mongoose。

数据是JPG,存储在模式的缓冲区中。 似乎正确地到达那里,因为我可以使用cli读取数据。

然后我跑了一个发现,抢到领域,并尝试发送它。 见代码:

res.contentType('jpg'); res.send(img); 

我不认为这是一个存储问题,因为我在这里执行相同的操作:

 var img = fs.readFileSync( __dirname + '/../../img/small.jpg' ); res.contentType('jpg'); res.send(img); 

在浏览器中出现图像(作为一个破碎的图标)。

我想知道,如果这是快递资源的问题,因为我有格式设置为JSON,但是我确实在发送数据之前覆盖内容types。

抓头

我自己设法解决了这个问题。 似乎我正在使用正确的方法来发送数据从快递,但没有妥善保存(棘手!)。

为了将来可以引用任何处理图片下载并在缓冲区pipe理它们的人,下面是使用请求包的一些示例代码:

 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中,你需要设置一个types为Buffer的文档属性来成功存储它。 似乎这个问题是由于我如何将它保存到Mongo中。

希望将来可以节省一些时间。 =)