简体   繁体   English

如何通过 aws Java SDK 公开 S3 object?

[英]How do you make an S3 object public via the aws Java SDK?

How do you make an S3 object public via the AWS Java SDK?如何通过 AWS Java SDK 公开 S3 object?

Specifically, what API methods via the Java AWS SDK can be used to make an Object public when its uploaded?具体来说,通过 Java AWS SDK 可以使用哪些 API 方法使上传的 Z497031794414A55543 公开?

Found the answer in an amazon aws forum .亚马逊 AWS 论坛中找到了答案。

return s3Client.putObject(
   new PutObjectRequest(bucketName, objectKey, inputStream, metadata)
      .withCannedAcl(CannedAccessControlList.PublicRead));

The answer being答案是

.withCannedAcl(CannedAccessControlList.PublicRead)

An alternative approach which allows for more finegrained control of who exactly is allowed to view the object (all users or authenticated users only):另一种方法可以更精细地控制允许查看 object 的人员(仅限所有用户或经过身份验证的用户):

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

source 资源

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM