Node.js 使用memoryStorage时,多缓冲区为空

Node.js 使用memoryStorage时,多缓冲区为空,node.js,express,multer,Node.js,Express,Multer,我用它来处理快车上传的文件。我想将缓冲区写入base64字符串进行存储。但是,当使用memoryStorage选项或(应该将文件保存在内存中而不是写入磁盘)时,对象上的buffer属性始终为null: var multer = require('multer'); var storage = multer.memoryStorage(); . . . app.post('/', multer({ storage: storage }).single('photo'), function(req

我用它来处理快车上传的文件。我想将缓冲区写入base64字符串进行存储。但是,当使用
memoryStorage
选项或(应该将文件保存在内存中而不是写入磁盘)时,对象上的
buffer
属性始终为
null

var multer = require('multer');
var storage = multer.memoryStorage();
. . .

app.post('/', multer({ storage: storage }).single('photo'), function(req, res) {
    var photo = req.files.photo || req.file || null;
    if (photo) {
        console.log(photo);
        var data = photo.buffer.toString('base64');
        . . .
    }
});

// Result of console.log
{
  fieldname: 'photo',                                                                                                                                         
  originalname: 'me.jpg',                                                                                                                                     
  name: '71a7e8c6aa262063574ddca9538c5174.jpg',                                                                                                               
  encoding: '7bit',                                                                                                                                           
  mimetype: 'image/jpeg',                                                                                                                                     
  path: 'C:\\Users\\alsoi\\AppData\\Local\\Temp\\71a7e8c6aa262063574ddca9538c5174.jpg',                                                                       
  extension: 'jpg',                                                                                                                                           
  size: 16563,                                                                                                                                                
  truncated: false,                                                                                                                                           
  buffer: null
}
我尝试过JPG、PNG和文本文件,但结果总是一样的

我遇到了一个从未解决的问题。我是不是配置错了骡子?还是只需要将其保存到磁盘,然后异步读取到base64?理想情况下,我只想使用multer应该创建的缓冲区


我正在使用Windows 10上的Node 5.11.1、Express 4和multer 1.2.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');
      . . .
    }
  });
});

您是否可以尝试在函数内部调用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');
      . . .
    }
  });
});

这会导致:
错误:发送邮件后无法设置邮件头。
对我来说,这很奇怪。由于某种原因,您的回复被发送了两次。是否在uploadFile方法外部发送响应,然后在其内部发送响应?另外,file.buffer现在在吗?这会导致:
错误:发送头后无法设置头。
对我来说。这很奇怪。由于某种原因,您的回复被发送了两次。是否在uploadFile方法外部发送响应,然后在其内部发送响应?还有,file.buffer现在在吗?