带有回调httpUploadProgress的AWS SDK JavaScript承诺

带有回调httpUploadProgress的AWS SDK JavaScript承诺,javascript,amazon-s3,aws-sdk,aws-sdk-js,Javascript,Amazon S3,Aws Sdk,Aws Sdk Js,我正在尝试使用AWS S3 SDK JavaScript获取httpUploadProgress。 使用这几行代码,我可以看到上传进度的预期结果,但如何使用Promise()获得相同的结果,我在浏览器中将其用作外部JS资源 工作示例: function uploadFile(){ var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}}); var fileChooser = document.getE

我正在尝试使用AWS S3 SDK JavaScript获取httpUploadProgress。 使用这几行代码,我可以看到上传进度的预期结果,但如何使用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;
    }

我也有同样的问题。我不确定你是否实现了它,但我认为这是你可能正在寻找的

function async 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 upload = s3.upload(params,opts)
        .on('httpUploadProgress', function(evt) {
          console.log("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%');
        })
        .promise();

    await upload.then(function(err, data) {
      console.log(err);
      alert("File uploaded successfully.");
    });
  }

  return false;
}