【发布时间】:2011-09-25 07:50:17
【问题描述】:
如何通过 AWS Java SDK 公开 S3 对象?
具体来说,通过 Java AWS SDK 的哪些 API 方法可用于在上传对象时将其公开?
【问题讨论】:
标签: java api amazon-s3 amazon-web-services
如何通过 AWS Java SDK 公开 S3 对象?
具体来说,通过 Java AWS SDK 的哪些 API 方法可用于在上传对象时将其公开?
【问题讨论】:
标签: java api amazon-s3 amazon-web-services
在amazon aws forum 中找到答案。
return s3Client.putObject(
new PutObjectRequest(bucketName, objectKey, inputStream, metadata)
.withCannedAcl(CannedAccessControlList.PublicRead));
答案是
.withCannedAcl(CannedAccessControlList.PublicRead)
【讨论】:
s3Client.putObject( 替换为TransferManager.upload(
TransferManager时,以下工作:Upload upload = tm.upload( new PutObjectRequest(bucketName, key, file, metadata) .withCannedAcl(CannedAccessControlList.PublicRead));
另一种方法可以更精细地控制谁可以查看对象(所有用户或仅经过身份验证的用户):
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, image);
AccessControlList acl = new AccessControlList();
acl.grantPermission(GroupGrantee.AllUsers, Permission.Read); //all users or authenticated
putObjectRequest.setAccessControlList(acl);
s3client.putObject(putObjectRequest);
【讨论】:
s3client.setObjectAcl("bucketName[/subDirectory]", fileName, CannedAccessControlList.PublicRead);
URL url = s3client.getUrl("bucketName[/subDirectory]", fileName);
String sharableLink = url.toExternalForm();
【讨论】: