javascript - 如何中止/停止正在进行的亚马逊 AWS s3 上传

标签 javascript amazon-web-services file-upload amazon-s3 aws-sdk-js

我正在使用 aws sdk 的 javascript 版本将文件上传到 amazon s3 存储桶。

代码:

AWS.config.update({
                accessKeyId : 'access-key',
                secretAccessKey : 'secret-key'
            });
            AWS.config.region = 'region';
            var bucket = new AWS.S3({params: {Bucket: 'bucket-name'}});
            //var fileChooser = document.getElementById('file');
            var files = event.target.files;
            $.each(files, function(i, file){
            //console.log(file.name);
                if (file) {
                    var params = {Key: file.name, ContentType: file.type, Body: file};
                    bucket.upload(params).on('httpUploadProgress', function(evt) {
                        console.log("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%');
                        if("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%' == 'Uploaded :: 20%'){
                            console.log("abort upload");
                            bucket.abort.bind(bucket);
                        }
                    }).send(function(err, data) {
                        if(err != "null"){
                            console.log(data);
                            //alert("Upload Success \nETag:"+ data.ETag + "\nLocation:"+ data.Location);
                            var filename = data.Location.substr(data.Location.lastIndexOf("/")+1, data.Location.length-1);
                            console.log(filename);
                            fileData = filename;
                            filename = filename.replace("%20"," ");
                            $('.aws-file-content').append('<i id="delete-aws-file'+i+'" class="delete-aws-file icon-remove-sign"  data-filename=' + fileData +'></i><a href="'+data.Location+'" target=_blank >'+filename+'</a><br>');
                        }else{
                            console.log(err);
                        }
                    });
                }
            });

虽然文件正在成功上传部分文件并且仍在进行中,但我想中止/停止文件上传。

我试过:

 bucket.abort();// not working
 bucket.abort.bind(bucket); //not working.

感谢您的帮助。

最佳答案

找到解决方案:

// replaced bucket.upload() with bucket.putObject()
var params = {Key: file.name, ContentType: file.type, Body: file};
request = bucket.putObject(params);

然后中止请求:

abort: function(){
            request.abort();
        }

关于javascript - 如何中止/停止正在进行的亚马逊 AWS s3 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429957/

相关文章:

php - Zend Framework 2中如何访问route、post、get等参数

c# - DevExpress ASPxUploadControl 抛出未指定的错误

javascript - 使 AngularJs 可被搜索引擎抓取

amazon-web-services - EC2上的运行Expect脚本挂起,但是在手动调用时成功运行

javascript - 当没有公开 viewController 时,如何将 cocoapod 转换为 typescript ?

mysql - 从 CircleCI 连接到远程 MySQL

python - AWS lambda 内存使用与 python 代码中的临时文件

android - Android上传文件到服务器

javascript - 主题不发出数据

javascript - 将日期对象转换为日期字符串