Я пытаюсь получить httpUploadProgress с помощью AWS S3 SDK JavaScript.Используя эти строки, я могу видеть ожидаемый результат с прогрессом загрузки, но как получить то же самое с помощью Promise (), я использую это в браузере в качестве внешнего ресурса JS.
Рабочий пример:
function uploadFile(){
var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}});
var fileChooser = document.getElementById('file');
var file = fileChooser.files[0];
if (file) {
console.log();
var opts = {queueSize: 1, partSize: 1024 * 1024 * 5};
var params = {Key: file.name, ContentType: file.type, Body: file};
s3.upload(params,opts).on('httpUploadProgress', function(evt) {
console.log("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%');
}).send(function(err, data) {
console.log(err);
alert("File uploaded successfully.");
});
}
return false;
}
То же самое я хочу с обещаниями.
function uploadFile(){
var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}});
var fileChooser = document.getElementById('file');
var file = fileChooser.files[0];
if (file) {
console.log();
var opts = {queueSize: 1, partSize: 1024 * 1024 * 5};
var params = {Key: file.name, ContentType: file.type, Body: file};
var promise = s3.upload(params,opts).promise();
promise()
.then(function(data){}, function(error){})
}
return false;
}