Нет, вы не можете получить URL-адрес одним действием, кроме двух :)
Прежде всего, вам, возможно, придется сделать файл общедоступным перед загрузкой, потому что нет смысла получать URL-адрес, к которому никто не может получить доступ. Вы можете сделать это, установив ACL, как предложил Майкл Астрейко. Вы можете получить URL-адрес ресурса, позвонивgetResourceUrl
или getUrl
.
AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.defaultClient();
s3Client.putObject(new PutObjectRequest("your-bucket", "some-path/some-key.jpg", new File("somePath/someKey.jpg")).withCannedAcl(CannedAccessControlList.PublicRead))
s3Client.getResourceUrl("your-bucket", "some-path/some-key.jpg");
Примечание 1.
Разница между getResourceUrl
и getUrl
заключается в том, что getResourceUrl вернет null при возникновении исключения.
Примечание 2:
getUrl
метод не определен в интерфейсе AmazonS3. Вы должны передать объект в AmazonS3Client, если используете стандартный построитель.