如何将文件上传到aws3 bucket中的单独文件夹



我想将公共文件上传到公用文件夹,将私人文件上传到在aws3 bucket中创建的私人文件夹。

我应该对代码进行哪些更改。

@Override
public void uploadFile(String keyName, String uploadFilePath) {
try {
File file = new File(uploadFilePath);
s3client.putObject(new PutObjectRequest(bucketName + "/public", keyName, file));
logger.info("===================== Upload File - Done! =====================");
System.out.println("url is*****" + s3client.getUrl(bucketName + "/public", keyName).toString());
url = s3client.getUrl(bucketName+ "/public", keyName).toString();
Connection cn = new Connection();
cn.db();
} catch (AmazonServiceException ase) {
logger.info("Caught an AmazonServiceException from PUT requests, rejected reasons:");
logger.info("Error Message:    " + ase.getMessage());
logger.info("HTTP Status Code: " + ase.getStatusCode());
logger.info("AWS Error Code:   " + ase.getErrorCode());
logger.info("Error Type:       " + ase.getErrorType());
logger.info("Request ID:       " + ase.getRequestId());
} catch (AmazonClientException ace) {
logger.info("Caught an AmazonClientException: ");
logger.info("Error Message: " + ace.getMessage());
}
}

默认情况下,AmazonS3存储桶中的所有对象都是私有的。

如果您希望公开特定的文件夹,您可以使用Bucket策略,例如:

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicFolder",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/public/*"]
}
]
}

bucket的值构造不正确,关键字:

bucketName + "/public", keyName

bucket值的正确构造,关键字:

bucketName, "public/" + keyName

请注意,对象键不应该包含前导/,所以如果您的keyName现在有一个,那么这是错误的,应该修复。。。对象键没有前导CCD_ 3,并且提供一个将导致问题。

最新更新