Ні, ви не можете отримати 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, якщо ви використовуєте стандартний конструктор.