是否可以通过单个操作将txt/pdf/png文件上传到Amazon S3,并获取上传的文件url作为响应。如果是这样,那么AWS Java sdk是我需要在我的java struts2 web应用程序中添加的正确的库。Amazon S3上传文件并获取URL
请给我一个解决方案。
是否可以通过单个操作将txt/pdf/png文件上传到Amazon S3,并获取上传的文件url作为响应。如果是这样,那么AWS Java sdk是我需要在我的java struts2 web应用程序中添加的正确的库。Amazon S3上传文件并获取URL
请给我一个解决方案。
要使文件上传公众可以使用的PutObjectRequest
的#withCannedAcl
方法之前:
myAmazonS3Client.putObject(new PutObjectRequest('some-grails-bucket', 'somePath/someKey.jpg', new File('/Users/ben/Desktop/photo.jpg')).withCannedAcl(CannedAccessControlList.PublicRead))
根据您在上传请求中指定的存储桶和文件名,您可以为自己制定出来。
例如如果你的水桶是mybucket
和你的文件被命名为myfilename
:
https://mybucket.s3.amazonaws.com/myfilename
的s3
位将取决于哪个区域的桶中是不同的。例如,我用的是东南亚地区,所以我的网址都一样:
https://mybucket.s3-ap-southeast-1.amazonaws.com/myfilename
上传文件后从AWS管理控制台,以下链接适用于单个文件,因此哪一个可以作为响应.. https://s3.amazonaws.com/cdn.generalsentiment.com/MVR/reports/2010-11_Hollywood_Buzz_Digest.pdf - http://cdn.generalsentiment.com.s3.amazonaws.com/MVR/reports/2010-11_Hollywood_Buzz_Digest.pdf - - http://cdn.generalsentiment.com/MVR/reports/2010-11_Hollywood_Buzz_Digest.pdf –
是的,网址应该有变化。选择一个你想使用的,并与它一起去。 –
Kool ..感谢您的信息..顺便说一下,上传部分将与AWS sdk库做对吗? –
不,你不能单独获取网址但只有两个:)
首先,您可能必须在上传之前公开文件,因为获取无人可访问的URL是没有意义的。你可以通过设置迈克尔阿斯特雷科建议的ACL来做到这一点。 您可以通过调用getResourceUrl
或getUrl
来获取资源URL。
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");
不同getResourceUrl
和getUrl
之间是当发生异常时getResourceUrl将返回null。
有点老,但仍然有人在将来在这个绊脚石:
你可以用一条线假设做到这一点,你已经写了CredentialProvider和AmazonS3Client。
它看起来就像这样:
String ImageURL = String.valueOf(s3.getUrl(
ConstantsAWS3.BUCKET_NAME, //The S3 Bucket To Upload To
file.getName())); //The key for the uploaded object
,如果你不写的CredentialProvider和AmazonS3Client然后让这样的URL之前,只需添加它们:
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
"POOL_ID", // Identity pool ID
Regions.US_EAST_1 // Region
);
如何从该请求中获取链接? –
这并不告诉我们如何获取上传资源的公开网址。 –