Amazon S3 télécharger le fichier et obtenir l'URL
Est-il possible de charger un txt/pdf/png Amazon S3 en une seule action, et d'obtenir le fichier téléchargé url réponse. Si oui, est-AWS sdk Java le droit de la bibliothèque que j'ai besoin d'ajouter dans mon java struts2 webapplication.
Merci de me suggérer une solution pour cela.
Vous devez vous connecter pour publier un commentaire.
À faire dans le fichier public avant le téléchargement, vous pouvez utiliser le
#withCannedAcl
méthode dePutObjectRequest
:Non, vous ne pouvez pas obtenir l'URL dans une action unique, mais deux 🙂
Tout d'abord, vous pouvez avoir à faire dans le fichier public avant de le télécharger car il n'a pas de sens pour obtenir l'URL que personne ne puisse y accéder. Vous pouvez le faire par ACL Michael Astreiko suggéré.
Vous pouvez obtenir l'URL de ressource, soit en appelant le
getResourceUrl
ougetUrl
.Note1:
La différence entre
getResourceUrl
etgetUrl
est que getResourceUrl sera de retour null lorsque l'exception se produit.Note2:
getUrl
méthode n'est pas définie dans la AmazonS3 interface. Vous devez lancer l'objet de AmazonS3Client si vous utilisez la norme constructeur.s3Client.getResourceUrl("your-bucket", "some-path/some-key.jpg")
fonctionne l'URL sans passer par un appel d'AWS.getResourceUrl
n'est pas dans le dernier sdk.s3Client.getUrl("your-bucket", "some-path/some-key.jpg").toString();
obtiendrez l'url publique.s3Client.utilities().getUrl(getUrlRequest);
Vous pouvez travailler sur vous-même donné le seau et le nom de fichier que vous spécifiez dans la demande de téléchargement.
par exemple, si votre seau est
mybucket
et votre fichier est nommémyfilename
:La
s3
bits seront différentes selon la région de votre seau est en. Par exemple, j'utilise l'asie du sud-est la région de mon url du type:De même, si vous voulez un lien par s3Client vous pouvez utiliser ci-dessous.
un peu vieux, mais encore pour toute personne tombant sur ce sujet dans l'avenir:
vous pouvez le faire avec une ligne en supposant que vous avez déjà écrit le CredentialProvider et la AmazonS3Client.
il ressemblera à ceci:
et si vous n'avez pas écrit le CredentialProvider et la AmazonS3Client puis il suffit de les ajouter avant d'entrer l'URL comme ceci:
avec cela, vous pouvez récupérer le lien de déjà téléchargé un fichier à un compartiment S3.
@hussachai et @Jeffrey Kemp réponses sont très bonnes. Mais ils ont quelque chose en commun, c'est l'url retournée est de virtual-host-style, pas dans le chemin de style. Pour plus d'informations sur le s3 url de style, peut se référer à AWS S3 URL Styles. Dans le cas de certaines personnes veulent avoir le chemin de style s3 url générée. Voici l'étape. En principe, tout sera la même que @hussachai et @Jeffrey Kemp réponses, avec une seule ligne de changement de réglage ci-dessous:
Cela va générer des url de ce type:
https://s3.us-west-2.amazonaws.com/mybucket/myfilename