Android 使用Amazon S3上载具有特定文件夹结构的文件

Android 使用Amazon S3上载具有特定文件夹结构的文件,android,amazon-s3,Android,Amazon S3,我正在使用亚马逊的云计算工具S3上传文件。 我需要它来存储和区分不同用户的不同日志。到目前为止,我只能将一个文件上载到根目录,因此我无法实时创建文件夹,这是我所需要的 我用这个代码上传这样的文件,没有目录结构: AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY)); File file = FileUtil.writeTe

我正在使用亚马逊的云计算工具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\u id]/[timestamp]/actual\u file.ext这样的文件结构呢?

我尝试过简单地将路径添加到BUCKET\u ID,当然这不起作用


有什么建议吗?

您可以通过在S3对象键中添加前缀来模拟文件夹

您的bucket名称不变,但可以按前缀()过滤bucket的对象

因此,您的bucket MyBucket中可以包含不同的对象:

  • user1/ts1/firstobject
  • user1/ts2/secondobject
  • userN/tsN/object
您可以在S3前缀管理中找到AWS文档:

已更新

在您的情况下,文件名不应该是actual\u file.ext,而应该是[user\u id]/[timestamp]/actual\u file.ext,因为它是S3对象键


PutObjectRequest por=新的PutObjectRequest(BUCKET\u ID、[user\u ID]/[timestamp]/[fileName],文件)

错误。。。不明白,我需要亚马逊Android版S3SDK的解决方案,而不是URL。我已经更新了我的答案。