Non, vous ne pouvez pas obtenir l'URL en une seule action mais deux :)
Tout d'abord, vous devrez peut-être rendre le fichier public avant de le télécharger car cela n'a aucun sens d'obtenir l'URL à laquelle personne ne peut accéder. Vous pouvez le faire en définissant ACL comme Michael Astreiko l'a suggéré. Vous pouvez obtenir l'URL de la ressource en appelant getResourceUrl
ou 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");
Remarque1:
la différence entre getResourceUrl
et getUrl
est que getResourceUrl renverra null lorsqu'une exception se produit.
Remarque 2: la
getUrl
méthode n'est pas définie dans l'interface AmazonS3. Vous devez convertir l'objet en AmazonS3Client si vous utilisez le générateur standard.