【问题标题】:AWS SDK JavaScript Promise with callback httpUploadProgress带有回调 httpUploadProgress 的 AWS 开发工具包 JavaScript Promise
【发布时间】:2020-01-26 03:24:07
【问题描述】:

我正在尝试使用 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;
    }

【问题讨论】:

    标签: javascript amazon-s3 aws-sdk aws-sdk-js


    【解决方案1】:

    我遇到了同样的问题。我不确定你对它的实施,但我认为这就是你可能正在寻找的......

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-24
      • 2018-08-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2014-12-16
      相关资源
      最近更新 更多