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

如何通过aws Java SDK公开S3对象?,java,api,amazon-s3,amazon-web-services,Java,Api,Amazon S3,Amazon Web Services,如何通过AWS Java SDK公开S3对象 具体来说,通过Java AWS SDK可以使用哪些API方法在上传对象时将其公开?在 答案是 。使用cannedacl(cannedaccesscontroller.PublicRead)另一种方法,允许更精细地控制到底允许谁查看对象(仅限所有用户或经过身份验证的用户): 如果您使用的是转账管理器,此解决方案也可以使用。只需将s3Client.putObject(替换为TransferManager.upload(不幸的是,使用TransferUti

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

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

答案是


。使用cannedacl(cannedaccesscontroller.PublicRead)

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


如果您使用的是转账管理器,此解决方案也可以使用。只需将
s3Client.putObject(
替换为
TransferManager.upload(
不幸的是,使用TransferUtility时,Android SDK似乎没有此功能:当使用
TransferManager
时,以下工作:
upload upload=tm.upload(新的PutObjectRequest(bucketName、密钥、文件、元数据).withCannedAcl(cannedaccesscontroller.PublicRead));
return s3Client.putObject(
   new PutObjectRequest(bucketName, objectKey, inputStream, 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();