我了解 Aws S3 存储桶中的文件夹和对象的概念,即没有文件夹,都是对象。但我需要创建一个空文件夹,用户可以在其中输入和上传他们的文件。我已经尝试了几件事,比如添加一个测试 .txt 文件,其路径在“/”之后扩展了空文件夹的名称,它确实创建了文件夹,但它保留了 test.txt 文件,如果我删除该文件也会删除创建的文件夹。
那么关于如何创建一个在 S3 存储的 Web 控制台中创建的零大小空文件夹对象的任何想法?任何帮助都会很棒
我了解 Aws S3 存储桶中的文件夹和对象的概念,即没有文件夹,都是对象。但我需要创建一个空文件夹,用户可以在其中输入和上传他们的文件。我已经尝试了几件事,比如添加一个测试 .txt 文件,其路径在“/”之后扩展了空文件夹的名称,它确实创建了文件夹,但它保留了 test.txt 文件,如果我删除该文件也会删除创建的文件夹。
那么关于如何创建一个在 S3 存储的 Web 控制台中创建的零大小空文件夹对象的任何想法?任何帮助都会很棒
使用您选择的 SDK 创建一个名为的 S3 对象,例如,folder1/folder2/cats/
大小为 0 字节。这假定您首选的文件夹分隔符是/
,这显然是最常用的分隔符,但您可以使用任何您喜欢的分隔符。
这是一个通用的Java 上传对象示例。修改此项,使对象键为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());
}
}