0

我在 MongoDB 上使用 GridFS 存储图像,我想在客户端显示这些图像。该代码适用于小图像,但是当我想显示大于 5 Mo 的图像时,我在客户端没有返回。

结果控制器.js:

images.forEach(function(item) {
   GridFileService.getBuffer(item.id, function(res)
   {
       var blob = UtilsService.b64toBlob(res, item.mimetype); //Convert base64 to blob
       var blobURL = URL.createObjectURL(blob);
       $scope.resultsModel.originalImage.push(blobURL); //Store for display in image src tag
   });
});

GridFileService.js:

gridFileService.getBuffer = function(id, callback)
{
   $http(
   {
      method: 'GET',
      url: '/api/file_buffer/' + id
   }).then(function successCallback(response)
   {
      callback(response.data);
   }, function errorCallback(response)
   {
      AlertService.addAlert('danger', response.data);
   });
};

api.js:

app.get('/api/file_buffer/:id', routesFiles.getBufferFile);

路由文件.js:

function getBufferFile(req, res, next)
{
    var idFile = req.params.id;

    //Get buffer from GridFS with id file
    gfs.readFile({_id: idFile}, function (err, data) {
        if (err)
        {
            log.error('Error on get buffer file ', err);
            return res.status(500).send(err.message);
        }
        else
        {
            //Convert buffer in base64
            var base64 = new Buffer(data).toString('base64');

            return res.status(200).send(base64); // return to client side with datas
        }
    });
}

如何快速返回大图像的缓冲区?

4

0 回答 0