繁体   English   中英

如何通过Multer存储引擎获取多个上传流?

[英]How can I get multiple upload stream with multer storage engine?

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

在流的中间,我的代码检查块并将其发送到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) => {

});

我刚刚在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 :-)
    }
  });
});

希望对您有所帮助。

ķ

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM