No, non puoi ottenere l'URL in una sola azione ma due :)
Prima di tutto, potresti dover rendere pubblico il file prima di caricarlo perché non ha senso ottenere l'URL a cui nessuno può accedere. Puoi farlo impostando ACL come suggerito da Michael Astreiko. Puoi ottenere l'URL della risorsa chiamando getResourceUrl
o 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");
Nota 1:
la differenza tra getResourceUrl
e getUrl
è che getResourceUrl restituirà null quando si verifica un'eccezione.
Nota 2: il
getUrl
metodo non è definito nell'interfaccia AmazonS3. Devi eseguire il cast dell'oggetto su AmazonS3Client se utilizzi il generatore standard.