Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 下载图像,然后为其提供NodeJS_Node.js_Image_Mongodb_Request_Buffer - Fatal编程技术网

Node.js 下载图像,然后为其提供NodeJS

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

我正在从URL下载一个图像并将其存储在MongoDB中。之后,我希望能够为客户提供图像服务。这是我的下载代码:

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方案并使其工作。谢谢大家