AWS javascript SDK多文件上传进度条

时间:2015-07-02 07:40:27

标签: javascript amazon-web-services amazon-s3

我已经可以将文件上传到s3了。但我想在每个文件中加载进度。

bucket.upload(params, function(err, data){
   console.log("File Uploaded Successfully");
}).on('httpUploadProgress', function(progress){
   console.log(progress.loaded / progress.total * 100);}

此代码存在问题。进度会返回一些数据,但不会确定此数据是针对该单个文件的。

有没有办法找出返回进度是否针对该单个数据?

3 个答案:

答案 0 :(得分:1)

对于那些遇到同样问题的人。实际上没有必要破解代码。只需在上传进度回调中使用this

s3.upload(params, function (err, data) {
    ...
}).on('httpUploadProgress', function(progress) {
    // Here you can use `this.body` to determine which file this particular
    // event is related to and use that info to calculate overall progress.
});

我在AWS SDK JS repo中发布了issue,随着时间的推移,可能会有更好的解决方案。

答案 1 :(得分:0)

很抱歉迟到的答案(我甚至不确定你是否还需要答案)。

我有同样的问题,我分叉their repo on github并自己制定解决方案。

这里是更新的aws-sdk-js repo的附件,可以满足您的需求。

https://github.com/mohamed-kamal/aws-sdk-js-upload-progress

希望它有所帮助。

答案 2 :(得分:0)

这对我有用。

S3.upload(params, options, function (err, data) {
          if (err) {
            reject("error");
          }
          alert("Successfully Uploaded!");
        }).on("httpUploadProgress", (progress) => {
          let uploaded = parseInt((progress.loaded * 100) / progress.total);
          this.setState({
            progress: uploaded,
            uploadText: "Uploading...",
            uploading: true,
          });
        });