Amazon S3上传挂起100%

时间:2012-10-08 12:31:27

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

我正在使用亚马逊提供的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从外部检查文件是否存在,则表示已成功上传文件。

1 个答案:

答案 0 :(得分:3)

从您的代码段开始,由于upload.isDone()为真,因此您已经无法获得更多更新。如果你添加:

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

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