AngularJS AWS S3 sdk putObject не будет отправлять несколько объектов

0

Вот мой код контроллера:

angular.module("MODULE").controller('CTRL', function($scope,
                                                                      $http,
                                                                      $location,
                                                                      $rootScope,
                                                                      $window,
                                                                      uuid) {
    $scope.uploading = [];
    $scope.uploaded = [];
    $scope.files = [];
    $scope.creds = {
      bucket: 'BUCKET',
      access_key: 'KEY',
      secret_key: 'SECRET'
    };

    $scope.abort = function(index) {
        $scope.upload[index].abort();
        $scope.upload[index] = null;
    };

    var unreg = $scope.$watch('files.length', function(){
        $scope.uploadImages();
    });


    $scope.server_upl = function(){
      console.log($scope.uploaded.length);
      if($scope.uploaded.length == $scope.files.length){
        $http({
          url: "/mupl",
          method: "POST",
          data: {ti: $scope.uploaded}
        }).success(function(data){
          if(data == "OK"){
            alert("All Done");
          }

        });
      }
    };

    $scope.uploadImages = function(){
      if($scope.files && $scope.files.length != 0){
        unreg();
        console.log($scope.files);
        AWS.config.update({ accessKeyId: $scope.creds.access_key,
                            secretAccessKey: $scope.creds.secret_key
                          });

        AWS.config.region = 'us-east-1';
        for(var i=0; i< $scope.files.length; i++){
          var bucket = new AWS.S3({ params: { Bucket: $scope.creds.bucket } });
          console.log($scope.files[i]);
          var file = $scope.files[i];
          var file_type = file.type.split("/")[1];
          var _uuid = uuid.new();
          var key = _uuid + "." + file_type;
          console.log("I: " + i);
          console.log("KEY: " + key);

          var params = { Key: key,
                         ContentType: file.type,
                         Body: file,
                         ServerSideEncryption: 'AES256' };

          bucket.putObject(params, function(err, data) {
            if(err) {
              // There Was An Error With Your S3 Config
              console.log(err);
              return false;
            }
            else {
              // Success!
              console.log("Temp Bucket Upload Done");
              $scope.uploaded.push(key);
              $scope.server_upl();
            }
          })
          .on('httpUploadProgress',function(progress) {
            // Log Progress Information
            //console.log(Math.round(progress.loaded / progress.total * 100) + '% done');
          });
        }
      } //if(files && files.length)
      else{
        console.log("No file selected");
      }
    }
});

В $scope.uploadImages для каждого файла я создаю uuid. Но если я просматриваю несколько файлов (n), как-то (?), for циклов для n раз и $scope.uploaded имеет n объектов, но все сущности имеют одинаковый uuid. Что я здесь не вижу?

Теги:
amazon-web-services
amazon-s3

1 ответ

0

Вы устанавливаете uuid здесь: var _uuid = uuid.new(); но затем никогда не меняйте его. Таким образом, каждый ключ для файла будет иметь тот же uuid, что и файл_type.

  • 0
    Спасибо Даниэль, но извините, не мог понять. Линия находится внутри петли. Так что каждый раз, когда он зацикливается, должен быть создан новый uuid, не так ли?
  • 0
    Было бы полезно, если бы вы разместили весь контроллер.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню