Est-il possible de télécharger un fichier txt / pdf / png sur Amazon S3 en une seule action et d'obtenir l'URL du fichier téléchargé en tant que réponse. Si tel est le cas, le kit AWS Java SDK est-il la bonne bibliothèque que je dois ajouter à mon application Web java struts2.
Veuillez me suggérer une solution pour cela.
java
amazon-s3
amazon-web-services
Sangram Anand
la source
la source
Réponses:
Pour rendre le fichier public avant le téléchargement, vous pouvez utiliser la
#withCannedAcl
méthode suivantePutObjectRequest
:la source
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
ougetUrl
.Remarque1: la différence entre
getResourceUrl
etgetUrl
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.la source
s3Client.getResourceUrl("your-bucket", "some-path/some-key.jpg")
l'URL fonctionne sans appel à AWS.getResourceUrl
n'est pas dans le dernier sdk.s3Client.getUrl("your-bucket", "some-path/some-key.jpg").toString();
obtiendra l'url publique.Vous pouvez le résoudre vous-même en fonction du compartiment et du nom de fichier que vous spécifiez dans la demande de téléchargement.
par exemple si votre bucket est
mybucket
et que votre fichier est nommémyfilename
:Le
s3
bit sera différent selon la région dans laquelle se trouve votre bucket. Par exemple, j'utilise la région de l'Asie du Sud-Est, donc mes URL sont comme:la source
Les réponses @hussachai et @Jeffrey Kemp sont plutôt bonnes. Mais ils ont quelque chose en commun, c'est que l'URL renvoyée est de style hôte virtuel, pas de style chemin. Pour plus d'informations sur le style d'URL s3, vous pouvez consulter Styles d'URL AWS S3 . Dans le cas où certaines personnes souhaitent générer une URL s3 de style chemin. Voici l'étape. Fondamentalement, tout sera le même que les réponses @hussachai et @Jeffrey Kemp, seulement avec un changement de paramètre de ligne comme ci-dessous:
Cela générera une URL comme: https://s3.us-west-2.amazonaws.com/mybucket/myfilename
la source
De même, si vous voulez un lien via s3Client, vous pouvez utiliser ci-dessous.
la source
un peu vieux mais toujours pour tous ceux qui tomberont dessus à l'avenir:
vous pouvez le faire avec une ligne en supposant que vous avez déjà écrit le CredentialProvider et le AmazonS3Client.
Il ressemblera à ceci:
et si vous n'avez pas écrit CredentialProvider et AmazonS3Client, ajoutez-les simplement avant d'obtenir l'URL comme ceci:
la source
avec cela, vous pouvez récupérer le lien du fichier déjà téléchargé vers le compartiment S3.
la source
La méthode ci-dessous télécharge le fichier dans un dossier particulier dans un compartiment et renvoie l'URL générée du fichier téléchargé.
la source