Node.js 下载图像,然后为其提供NodeJS
我正在从URL下载一个图像并将其存储在MongoDB中。之后,我希望能够为客户提供图像服务。这是我的下载代码:Node.js 下载图像,然后为其提供NodeJS,node.js,image,mongodb,request,buffer,Node.js,Image,Mongodb,Request,Buffer,我正在从URL下载一个图像并将其存储在MongoDB中。之后,我希望能够为客户提供图像服务。这是我的下载代码: request({url: urlString, encoding: null }, function (error, response, body) { if (!error && response.statusCode == 200) { body = new Buffer(body, 'binary'); Images.c
request({url: urlString, encoding: null },
function (error, response, body) {
if (!error && response.statusCode == 200) {
body = new Buffer(body, 'binary');
Images.collection.insert({img:
{ contentType: response.headers['content-type'], data: body},
url: urlString}, function() {});
}
})
以下是我的端点代码:
Images.findOne({url: query.url})
.lean()
.exec(function (err, doc) {
if (err) return next(err);
if(doc && doc.img) {
res.contentType(doc.img.contentType);
res.send(doc.img.data);
}
});
结果是文件比最初下载的文件大得多。mongo中的记录看起来仍然被包装:“BinData(0,”。我做错了什么?在MongoDB中存储图像。您的文件系统是否已损坏?您应该使用
编码:null
而不是编码:'binary'
。这将使正文成为缓冲区实例,从而避免服务器端出现任何编码问题。更新代码以反映新的编码,但结果仍然是一个坏的图像。不知道如何粘贴这个结果,这使得调试非常困难。我能够使用FS方案并使其工作。谢谢大家