如何使用multer存储引擎获得多个上传流?

时间:2018-04-02 06:47:10

标签: node.js multer

我正在制作一个multer存储引擎,它可以在客户端和S3服务器之间建立流连接。

在流的中间,我的代码检查块并将其发送到S3。

我可以从node.js服务器获取文件流。但是当我请求文件阵列上载时,节点检查器只显示一个流。我该怎么办?

流引擎代码段

CustomStreamEngine.prototype._handleFile = function _handleFile (req, file, cb) {
    // for inspect
    req.files.length    // 1 
    file;

};

请求控制器

var streamStorage = multer({
    storage: streamEngine()
});

dev.post('/rec_test', streamStorage.array('source'), (req, res, next) => {

});

2 个答案:

答案 0 :(得分:1)

我刚刚在npm上发布了这个流multipart/form-data解析器form-parser

您应该能够执行以下操作:

dev.post('/rec_test', async (req, res, next) => {
  // Parse request
  await parser(req, async ({ fieldType, fieldName, fieldContent }) => {
    // Log all fields
    console.log({ fieldType, fieldName, fieldContent });

    // Handle 'source' file fields
    if (fieldType === 'file' && fieldName === 'source[]') {
      // Get file info
      const { fileName, fileType, fileStream } = fieldContent;

      // Upload fileStream to S3 :-)
    }
  });
});

希望它有所帮助。

ķ

答案 1 :(得分:1)

我认为您可以向https://github.com/expressjs/multer/blob/master/lib/make-middleware.js添加一些日志以进行检查。 目前,我在客户端上使用axios通过multer将多个文件发送到服务器。我可以看到函数中的所有文件 busboy.on('file', function (fieldname, fileStream, filename, encoding, mimetype),,但一次只有一个文件,此函数将调用自定义存储的_handfile函数,因此我认为这是您遇到问题的原因。 希望它可以帮助您