代码之家  ›  专栏  ›  技术社区  ›  Baroque Code

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

  •  0
  • Baroque Code  · 技术社区  · 6 年前

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

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

    我可以从节点获取文件流。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 回复  |  直到 6 年前
        1
  •  1
  •   Evan Darwin Shveta Sachdeva    6 年前

    我刚刚发布了这个流媒体 multipart/form-data npm上的解析器为 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 :-)
        }
      });
    });
    

    希望对你有帮助。

    K

        2
  •  1
  •   Thanh Nguyen Tai    5 年前

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