Amazon S3 上传文件并获取 URL

2022-08-31 09:01:35

是否可以在单个操作中将 txt/pdf/png 文件上传到 Amazon S3,并获取上传的文件 URL 作为响应?

如果是这样,AWS Java 开发工具包是否是我需要添加到 java struts2 Web 应用程序中的正确库?

请建议我解决这个问题。


答案 1

不,您不能在单个操作中获取URL,而是两个:)

首先,您可能必须在上传之前公开文件,因为获取没有人可以访问的URL是没有意义的。您可以通过按照Michael Astreiko的建议设置ACL来执行此操作。您可以通过调用 或 来获取资源 URL。getResourceUrlgetUrl

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");

注1:和 之间的区别在于,当发生异常时,getResourceUrl 将返回 null。getResourceUrlgetUrl

注意2:方法未在AmazonS3接口中定义。如果您使用标准构建器,则必须将对象强制转换为 AmazonS3Client。getUrl


答案 2

您可以根据存储桶和您在上传请求中指定的文件名自行解决。

例如,如果您的存储桶是,并且您的文件被命名为:mybucketmyfilename

https://mybucket.s3.amazonaws.com/myfilename

该位将根据您的存储桶所在的区域而有所不同。例如,我使用东南亚地区,所以我的网址是这样的:s3

https://mybucket.s3-ap-southeast-1.amazonaws.com/myfilename

推荐