离子上传视频到S3

时间:2016-08-01 08:48:22

标签: javascript video amazon-s3 ionic-framework

我正在尝试使用此功能上传视频 http://market.ionic.io/plugins/image-upload

我知道视频的文件路径(它们在我可以通过HTTP访问的摄像机上),我正在尝试研究如何使用这样的东西将这些视频传输到S3上。

我知道我无法将文件路径传递给此函数,并且它必须是根据指令的实际文件。

如何将大型视频文件复制到Javascript变量中以作为文件上传?

  var imageUploader = new ImageUploader();
  scene.videoFiles.forEach(function(videoFile) {
    imageUploader.push(videoFile, function (data) {
      console.log('File uploaded Successfully', videoFile, data);
      $scope.uploadUri = data.url;
      $scope.$digest();

    });
  })};

1 个答案:

答案 0 :(得分:1)

你可以使用$ cordovaFile和aws java script-sdk上传文件(视频)到aws-s3存储桶。这是将视频上传到s3存储桶的示例代码。

var uploadFile = function (file_name,file_path) {
            var deferred = $q.defer();
            $cordovaFile.readAsArrayBuffer(file_name,file_path)
                .then(function (success) {
                    AWS.config.region = 'eu-west-1';
                    AWS.config.update({
                        accessKeyId: 'ACCESS-KEY',
                      secretAccessKey:'SECRET-KEY'
                    });
                    var bucket = new AWS.S3({
                        params: {
                            Bucket: 'Bucket-NAME'
                        }
                    });
                    var params = {
                        Key: "uploads/"+file_name,
                        Body: success
                    };

                    bucket.upload(params).on('httpUploadProgress',function(evt){
                        $scope.uploading = true;
                        $scope.progress = parseInt((evt.loaded*100)/ evt.total);
                        console.log("Uploaded :: " + $scope.progress);
                        $scope.$apply();
                    }).send(function (err, data) {
                        $scope.uploading = false;
                        $scope.$apply();
                        deferred.resolve(data);

                    });
                    $scope.i++;

                }, function (error) {
                    deferred.reject(error);
                });
            return deferred.promise;
        };