我正在使用亚马逊提供的高级API将文件上传到亚马逊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%,就不会再更新。它似乎会更新两次,然后停止更新。
如果我在外部使用Cyberduck检查文件是否存在,它似乎已经成功上传了该文件。