使用memoryStorage时,Multer缓冲区为空

时间:2016-09-27 00:57:58

标签: node.js express multer

我使用multer处理Express路线上的上传文件。我想将缓冲区写入base64字符串进行存储。但是,当使用memoryStorage选项或not specifying any options(应该将文件保留在内存中而不是写入磁盘)时,对象上的buffer属性始终为{{ 1}}:

null

我尝试过JPG,PNG和Text文件,但结果总是一样。

我遇到this issue,但从未解决过。我是不是以某种方式错误配置了m ??或者我只需要将其保存到磁盘然后将其异步读取到base64吗?理想情况下,我只想使用multer应该创建的缓冲区。

我在Windows 10上使用Node 5.11.1,Express 4和multer 1.2.0进行开发。

1 个答案:

答案 0 :(得分:0)

您可以尝试在函数内部调用multer而不是中间件吗?我喜欢这样做,以便我可以更好地控制错误信息。

var uploadFile = multer(
  {
    storage: multer.memoryStorage(),
  })
  .single('photo');

app.post('/', function(req, res) {
  uploadFile(req, res, error => {
    if (error) { // handle error }
    var photo = req.files.photo || req.file || null;
    if (photo) {
      console.log(photo);
      var data = photo.buffer.toString('base64');
      . . .
    }
  });
});