저는 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
나는 DB의 레코드 사이즈를 볼 수 있습니다. 바이너리 데이터가 있습니다. 레코드 크기는 파일 크기와도 일치합니다. 행복하다. 몽고와 응답을 보내려고에서
이제 검색 같은 바이너리 데이터 :
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.
"모든 파일에서 작동하지 않습니다." 어떤 파일이 작동하며 어떤 파일이 작동하지 않습니다. 패턴이 있니? 또한, ** ** 작동하지 않는 방법은 무엇입니까? 오류가 발생 했습니까? 파일이 손상 되었습니까? –
때때로 작동하지 않는 것으로 알려진 gif. – user3297351
GridFS를 사용하면 다음과 같은 방법으로 쓸 수 있습니다 :'file.stream (true) .pipe (res);' – vedi