如何使用 Android Sdk 在 aws S3 存储桶中创建一个空文件夹?

How to create an empty folder in aws S3 bucket with using Android Sdk?

我理解Aws S3 bucket中文件夹和对象的概念,没有文件夹,都是对象。但我需要创建一个空文件夹,用户可以在其中输入和上传他们的文件。 我尝试了几种方法,比如添加一个测试 .txt 文件,其路径在“/”之后扩展空文件夹的名称,它确实创建了文件夹,但它保留了 test.txt 文件,如果我删除它,也会删除创建的文件夹.

关于如何创建一个零大小的空文件夹对象,就像在 S3 存储的 Web 控制台中创建的那样,您知道吗?任何帮助都会很棒

使用您选择的 SDK 创建一个名为 folder1/folder2/cats/ 的 S3 对象,大小为 0 字节。这假设您首选的文件夹分隔符是 /,这显然是最常用的分隔符,但您可以使用任何您喜欢的分隔符。

这是一个通用的 Java upload an object 示例。修改这个,对象键为folder1/folder2/cats/,不上传任何内容。

尽管时间很长,也许这段代码可以帮助有同样问题的人。我正在使用 Java 的 SDK。我假设您已经配置了一个 clients3 并且可以正常工作。所以我要在这里模拟他的注射。 查看createFolder方法:

   @Inject
    private AmazonS3 s3client;//Your configurated s3Client  
    private final String SUFFIX = "/";
    
    //Create a conceitual folder into bucketName
    public void createFolder(String bucketName, String folderName) {
        try {
            // Create metadata with content 0 
            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setContentLength(0L);
            
            // Empty content
            InputStream inputStream = new ByteArrayInputStream(new byte[0]);
            
            // Creates a PutObjectRequest by passing the folder name with the suffix
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,
                        folderName.toString() + SUFFIX, inputStream, metadata);
            
            //Send the request to s3 to create the folder
            s3client.putObject(putObjectRequest);
            
        }catch (Exception e) {
            throw new RepositoryException("Error creating folder "+folderName, 
                    ErrorCode.SERVER_ERROR.getCode());
        }
        
    }