将二进制转换为base64时缓冲区溢出

时间:2016-07-13 04:33:52

标签: node.js mongodb buffer buffer-overflow

当我尝试从mongoDB中提取图像数据并尝试将其转换为base64时,我遇到了缓冲区溢出问题。我知道在mongo中存储图像不是最佳的,但我想这样做,只是为了做到这一点。

这是我收到的错误:

'start-server' errored after 6.28 s
[22:21:05] Error: stdout maxBuffer exceeded
    at Socket.<anonymous> (child_process.js:255:14)
    at emitOne (events.js:90:13)
    at Socket.emit (events.js:182:7)
    at readableAddChunk (_stream_readable.js:153:18)
    at Socket.Readable.push (_stream_readable.js:111:10)
    at Pipe.onread (net.js:529:20)

以下是调用和转换数据的路径:

 app.get('/api/photos', function (req, res) {
    var photos = Photo.find({}, function(err, photos) {
      if(photos.length != 0){
        var photosData = [];
        for(var i = 0; i < photos.length; i++){
          var thumb = new Buffer(photos[i].img.data).toString('base64');
          photosData.push(thumb);
        }
        res.json({info: 'it worked',
          photos: photosData
        });
      }else{
        res.json({info: 'it worked',
          photos: false
        });
      }
    });
  }) 

1 个答案:

答案 0 :(得分:0)

请参阅此问题以获取maxBuffers:Reading binary data from a child process in Node.js

这实际上来自我的gulp文件,因为我有一个exec任务正在启动我的服务器。必须将maxBuffer添加到该子进程,如下所示。

Repository