我是mongodb的新手。如何發送來自node.js服務器的響應二進制數據
下面的代碼片段我存儲的二進制數據:
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。
你說「它不適用於所有文件」。它適用於哪些文件,哪些文件不適用;有沒有一種模式?另外,**如何**不是在工作?你得到一個錯誤,是文件損壞等? – 2014-09-02 16:49:09
注意到gif有時不工作。 – user3297351 2014-09-02 18:34:51
考慮使用GridFS,之後您可以使用以下方式編寫:'file.stream(true).pipe(res);' – vedi 2014-09-03 05:09:14