当前位置:  开发笔记 > 编程语言 > 正文

中止/停止亚马逊aws s3上传,aws sdk javascript

如何解决《中止/停止亚马逊awss3上传,awssdkjavascript》经验,为你挑选了1个好方法。

我正在使用aws sdk javascript在亚马逊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(''+filename+'
'); }else{ console.log(err); } }); } });

文件上传成功,我想中止/停止使用的文件上传:

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

感谢帮助.



1> Vishal Raj..:

找到解决方案:

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

然后中止请求:

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


切换到putObject方法可以消除s3.upload在后台执行的分段上传魔术。任何失败的上传都需要使用putObject从头开始重新启动,使用s3.upload可以在后台使用AWS.S3.MangaedUpload并自动对文件进行分块并分批发送,以允许中间文件重试。
推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有