[英]Uploading a file with Amazon S3 with a specific folder structure
我正在使用Amazon 的 cloud thingee 和 S3 来上传文件。
我需要它来存储和区分不同用户的不同日志。 到目前为止,我只能将文件上传到根目录,所以我不能真正即时创建文件夹,这是我需要的。
我使用此代码上传此类文件,没有目录结构:
AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY));
File file = FileUtil.writeTextFile(fileName, "test content");
PutObjectRequest por = new PutObjectRequest(BUCKET_ID, fileName, file);
s3Client.putObject(por);
ResponseHeaderOverrides override = new ResponseHeaderOverrides();
override.setContentType("text");
但是我需要针对不同用户等的动态文件结构,那么我如何包含一个文件结构,例如 [user_id]/[timestamp]/actual_file.ext?
我试过简单地将路径添加到 BUCKET_ID 当然这不起作用。
有什么建议吗?
您可以通过向S3 object key添加前缀来模仿文件夹。
您的存储桶名称不变,但您可以按前缀过滤存储桶的对象 ( https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html#API_ListObjectsV2_RequestSyntax )。
因此,您可以在存储桶 MyBucket 中拥有不同的对象:
您可以在此处找到有关 S3 前缀管理的 AWS 文档: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html
更新
在您的情况下,文件名不应该是 actual_file.ext 而是 [user_id]/[timestamp]/actual_file.ext 因为它是 S3 Object 密钥。
PutObjectRequest por = new PutObjectRequest(BUCKET_ID, [user_id]/[timestamp]/[fileName], file);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.