1

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

那么关于如何创建一个在 S3 存储的 Web 控制台中创建的零大小空文件夹对象的任何想法?任何帮助都会很棒

4

2 回答 2

1

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

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

于 2020-01-28T16:24:57.533 回答
1

尽管时间很长,但也许这段代码可以帮助有同样问题的人。我正在使用适用于 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());
        }
        
    }
    
于 2021-02-25T13:27:41.470 回答