Проблемы при загрузке нескольких файлов в корзину S3 с помощью javascript

#javascript #angularjs #amazon-web-services #amazon-s3

Вопрос:

Всем привет, я хочу загрузить несколько файлов в Aws S3 с помощью javascript sdk, я использую AngularJS, я написал код для загрузки одного файла, и это работает нормально, но проблема, с которой я сталкиваюсь, заключается в :-

1). Мне нужно просмотреть все файлы и загрузить файлы один за другим.

2). Я присваиваю имя файла загружаемому файлу, как я буду хранить несколько имен файлов в одном файле $scope.var.

3). Сначала я должен загрузить все файлы, затем мне нужно вызвать функцию отправки, чтобы вызвать лямбда-api для отправки моих данных в качестве полезной нагрузки json. Я не могу вызвать функцию отправки в цикле, как я буду с этим справляться.

Расход :- от формы пользователю выбрать несколько файлов, нажмите на кнопку «Отправить», первая отправка на S3 функция будет загружать все файлы на S3, и я генерировать имена файлов, временные метки, после загрузки в S3 еще один вызов API будет и данных, включая все формы, сведения имена файлов будут отправлены в этот API как JSON полезной нагрузки.

Мой код —

 if($scope.Form.$valid===true){
      AWS.config.update({
      region: "us-east-2",
      credentials: new AWS.CognitoIdentityCredentials({
      IdentityPoolId: "xxxxxx"
      })
      });
     $('#requestButton').html("Submitting..").attr('disabled',true);
     var s3 = new AWS.S3({
     apiVersion: 'xxxx-xx-xx',
     params: {Bucket: "xxxx"}
    });
    
    var files = document.getElementById('fileUpload').files;
     if(files.length == 0){
         // $scope.submitForm(data);
       }
     if (files){
      for (var i = 0; i < files.length; i  ){
      var file = files[i];
      var fileName = file.name.split('.')[i] new Date().getTime() "." file.name.split('.').pop();
      data.file= fileName;
      var filePath = ''   fileName;
      var fileUrl = 'https://xxxx.amazonaws.com/xxxx/'    filePath;
      s3.upload({
      Key: filePath,
      Body: file,
      ACL: 'private'
      }, function(err, data2) {
      if(err) {
      toastr["error"]("Cannot submit your form.", "Failed!");
      $('#requestButton').val("Submit").attr('disabled',false);
      reject('error');
      console.log("FAILED")
     }
     console.log(data);
     $scope.submitForm(data);
     }).on('httpUploadProgress', function (progress) {
     var uploaded = parseInt((progress.loaded * 100) / progress.total);
     $("progress").attr('value', uploaded);
     });
     }
    }
   }
    
 

Мой вопрос — как я могу добавить больше имен файлов в объект data.file, а во-вторых, где я должен вызвать submitForm() функцию «Я хочу вызвать форму отправки» только один раз после загрузки всех файлов, пожалуйста, помогите мне.