我存储的二进制数据:
var data = fs.readFileSync(path);
var image = new mongodb.Binary(data);
//open connection/collection
var record = {picname: id, content: image };
collection.save(record, {safe: true}, function(err,result){
if(err)
console.log(err.stack);
});//save
我可以看到数据库的记录大小。有二进制数据。记录大小也与文件大小相匹配。我很高兴。从蒙戈并试图响应发送
现在,检索相同的二进制数据:
var record = {picname: id};
collection.findOne(record, function(err,result){
if(err)
console.log(err.stack);
else
{
console.log('before read from db for download.');
//HOW TO READ IMAGE/BINARY DATA FROM RESULT?
//I need to send result in response. Any Idea?
console.log('before read from db for download');
}
});
我下面的代码片段发送二进制数据。它不适用于所有文件。可能是什么问题:
collection.findOne(record, function(err,result){
if(err)
console.log(err.stack);
else
{
console.log('before read from db for download. result: [' + result.picname + " ], type: " + result.imagetype);
res.end(result.content.buffer, "binary");
console.log('Responded SUCCESS: ' + id);
}
});//findOne
请让我知道如何检索并通过回复发送。
在此先感谢 DD。
+0
你说“它不适用于所有文件”。它适用于哪些文件,哪些文件不适用;有没有一种模式?另外,**如何**不是在工作?你得到一个错误,是文件损坏等? –
2014-09-02 16:49:09
+0
注意到gif有时不工作。 –
2014-09-02 18:34:51
+0
考虑使用GridFS,之后您可以使用以下方式编写:'file.stream(true).pipe(res);' –
2014-09-03 05:09:14