如何通过aws Java SDK公开S3对象?

Mik*_*son 51 java api amazon-s3 amazon-web-services

如何通过AWS Java SDK公开S3对象?

具体来说,通过Java AWS SDK可以使用哪些API方法在上传时使对象公开?

Mik*_*son 136

amazon aws论坛中找到了答案.

return s3Client.putObject(
   new PutObjectRequest(bucketName, objectKey, inputStream, metadata)
      .withCannedAcl(CannedAccessControlList.PublicRead));
Run Code Online (Sandbox Code Playgroud)

答案是

.withCannedAcl(CannedAccessControlList.PublicRead)

  • 如果您使用传输管理器,此解决方案也可以使用.只需替换`s3Client.putObject(```TransferManager.upload(` (13认同)
  • 当使用`TransferManager`时,以下工作有效:`Upload upload = tm.upload(new PutObjectRequest(bucketName,key,file,metadata).withCannedAcl(CannedAccessControlList.PublicRead));` (2认同)

Mau*_*ice 6

另一种方法允许更精细地控制允许谁查看对象(仅限所有用户或经过身份验证的用户):

    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);
Run Code Online (Sandbox Code Playgroud)