Amazonが提供する高レベルAPIを使用して、AmazonS3にファイルをアップロードしています。提供されている例のわずかに変更されたバージョンを使用します。
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%に達すると、再度更新されません。2回更新されてからハングするようです。
Cyberduckを使用して外部でファイルの存在を確認すると、ファイルが正常にアップロードされたように見えます。