AWS开发工具包JavaScript:如何显示AWS.S3.putObject的上传进度?

FkJ*_*FkJ 5 javascript html5 file-upload amazon-s3 amazon-web-services

我正在开发一个JavaScript客户端,将文件直接上传到Amazon S3.

<input type="file" id="file-chooser" /> 
<button id="upload-button">Upload to S3</button>
<div id="results"></div>

<script type="text/javascript">
  var bucket = new AWS.S3({params: {Bucket: 'myBucket'}});

  var fileChooser = document.getElementById('file-chooser');
  var button = document.getElementById('upload-button');
  var results = document.getElementById('results');
  button.addEventListener('click', function() {
    var file = fileChooser.files[0];
    if (file) {
      results.innerHTML = '';

      var params = {Key: file.name, ContentType: file.type, Body: file};
      bucket.putObject(params, function (err, data) {
        results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
      });
    } else {
      results.innerHTML = 'Nothing to upload.';
    }
  }, false);
</script>
Run Code Online (Sandbox Code Playgroud)

亚马逊文档中的示例工作正常,但它没有提供有关上载进度的任何反馈.

有任何想法吗?

谢谢

FkJ*_*FkJ 13

更改我的Google查询我找到了我需要的内容:

https://github.com/aws/aws-sdk-js/commit/084f676927b9cd3da337bd6d0d230680c138d73b

文档示例应该有它......

  • 您可以像这样处理'httpUploadProgress'事件(无法使代码格式正常工作,请参见此处https://gist.github.com/jboutros/f4d718caa39b1a7e995b) (2认同)

Chr*_*ams 6

与其使用该s3.PutObject函数,不如使用ManagedUpload函数。

它是专门开发的,允许您连接到httpUploadProgress事件,该事件应该允许相当容易地实现进度条的更新。