обрабатывать и загружать несколько файлов перед загрузкой в ​​s3 nodejs - PullRequest
0 голосов
/ 15 января 2019

Привет всем, поэтому у меня небольшая проблема. У меня есть следующий код, который отлично работает, если я хочу загрузить один файл. Это выглядит так:

var AWS = require("../AWS").AWS;
var s3 = require("../AWS").s3;
var multer = require("multer");
var multerS3 = require("multer-s3");

function singleFileUpload(req, res, newFileName, bucketName, fieldName) {
  var fileFilter = (req, file, cb) => {
    var ext = file.originalname.split(".").slice(-1);
    console.log("ext", ext);
    if (ext == "jpg" || ext == "mp4" || ext == "wmv") {
      cb(null, true);
    } else {
      cb(new Error("invalid file format"), false);
    }
  };
  var upload = multer({
    fileFilter,
    storage: multerS3({
      s3,
      bucket: bucketName,
      acl: "public-read",
      //   metadata: function(req, file, cb) {
      //     cb(null, { test: "testing_meta_data!" });
      //   },
      key: function(req, file, cb) {
        console.log(file);
        let fileExtension = file.originalname.split(".")[1];
        cb(null, newFileName + "." + fileExtension);
      }
    })
  });
  var singleUpload = upload.single(fieldName);
  singleUpload(req, res, error => {
    if (error) {
      throw error;
    } else {
      console.log("it worked");
    }
  });
}

module.exports = singleFileUpload;

Однако, когда я вызываю эту функцию более одного раза, вот так

var fieldName = "image";
var newFileName = "myCustomFileName1";
singleFileUpload(req, res, newFileName, process.env.BUCKET_NAME, fieldName);

var fieldName = "image2";
var newFileName = "myCustomFileName2";
singleFileUpload(req, res, newFileName, process.env.BUCKET_NAME, fieldName);

Я получаю MulterError: неожиданное поле. Фактически, если у меня есть другой файл в массиве файлов, я получаю эту ошибку, даже если я не вызываю функцию дважды. Я хочу, чтобы возможность настроить имя файла для каждого поля. Без использования единственного <input type="upload" name="myfiles" multiple> Но лучше иметь поле загрузки для каждого файла в форме. На переднем конце. Любая помощь здесь будет потрясающей! Спасибо

...