【问题标题】:Amazon S3 Upload hangs on 100%Amazon S3 上传挂起 100%
【发布时间】:2012-10-08 12:31:27
【问题描述】:

我正在使用 Amazon 提供的 High-Level API 将文件上传到 Amazon S3。我使用提供的示例的轻微修改版本:

public Upload uploadFile() {

    transferManager = new TransferManager(new BasicAWSCredentials("KEY", "SECRETKEY"));
    upload = transferManager.upload(existingBucketName, keyName, new File(filePath));
    return upload;
}

同时,我正在从另一个线程测量它的进度:

while (!upload.isDone()) {
        System.out.println("upload prog " + upload.getProgress().getPercentTransfered() + " state " + upload.getState());
        Thread.sleep(200);
}

进度报告本身似乎运行良好,因为我正在取得有意义的进展。但是,一旦达到 100%,上传就会停止。看起来很像对 isDone() 的调用被阻塞了,因为它根本不会更新。

输出

upload prog 91.9009559586608 state InProgress
upload prog 95.31523296022095 state InProgress
upload prog 99.01403304524446 state InProgress
upload prog 100.0 state InProgress
upload prog 100.0 state InProgress

百分比一旦达到 100%,将不会再次更新。它似乎更新了两次然后挂起。

如果我使用 Cyber​​duck 从外部检查文件是否存在,它似乎已成功上传文件。

【问题讨论】:

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


    【解决方案1】:

    从您的代码 sn-p 中,您不会再获得任何更新,因为您已经陷入循环,因为 upload.isDone() 是真的。如果添加:

    System.out.println("upload prog " + upload.getProgress().getPercentTransfered() + " state " + upload.getState());
    

    循环结束后,您将看到Completed 消息。您可能会看到多条 100% 消息,因为 TransferManager 正在等待上传完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-11
      • 2018-09-28
      • 2020-11-11
      • 2016-01-10
      • 2017-08-23
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多