Mr.*_*Mr. 24 java amazon-s3 amazon-web-services
我熟悉AWS Java SDK,我也尝试浏览相应的Javadoc,但我无法实现如何创建子目录,即存储桶中的目录对象,以及如何上传文件.
假设bucketName并dirName对应已经存在的存储桶(具有公共权限)和需要在存储桶中创建的新(对象)目录(即bucketName/dirName /)
我尝试过以下方法:
AmazonS3Client s3 = new AmazonS3Client(
new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY));
s3.createBucket(bucketName + "/" + dirName); //throws exception
Run Code Online (Sandbox Code Playgroud)
这会在第二行引发异常.
我们将非常感谢您创建子目录并将文件上传到其中的简短代码段.
cas*_*nca 43
S3中没有"子目录".有水桶,桶内有钥匙.
您可以使用前缀搜索来模拟传统目录.例如,您可以将以下密钥存储在存储桶中:
foo/bar1
foo/bar2
foo/bar3
blah/baz1
blah/baz2
Run Code Online (Sandbox Code Playgroud)
然后进行前缀搜索foo/,你会得到回复:
foo/bar1
foo/bar2
foo/bar3
Run Code Online (Sandbox Code Playgroud)
有关AmazonS3.listObjects详细信息,请参阅
更新:假设您已有一个现有存储桶,该存储桶下的密钥将包含/:
s3.putObject("someBucket", "foo/bar1", file1);
s3.putObject("someBucket", "foo/bar2", file2);
...
Run Code Online (Sandbox Code Playgroud)
然后,您可以列出以下所示的所有键foo/:
ObjectListing listing = s3.listObjects("someBucket", "foo/");
Run Code Online (Sandbox Code Playgroud)
fil*_*p_j 25
S3在我们的操作系统上没有以传统方式查看目录.以下是创建目录的方法:
public static void createFolder(String bucketName, String folderName, AmazonS3 client) {
// create meta-data for your folder and set content-length to 0
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(0);
// create empty content
InputStream emptyContent = new ByteArrayInputStream(new byte[0]);
// create a PutObjectRequest passing the folder name suffixed by /
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,
folderName + SUFFIX, emptyContent, metadata);
// send request to S3 to create folder
client.putObject(putObjectRequest);
}
Run Code Online (Sandbox Code Playgroud)
正如卡萨布兰卡已经说过你可以将文件上传到这样的目录:
s3.putObject("someBucket", "foo/bar1", file1);
Run Code Online (Sandbox Code Playgroud)
阅读整个教程这里的细节,而最重要的是,你会发现信息如何删除目录.
在较新版本的 SDK 中,您可以执行类似以下操作(无需创建空的 InputStream)来创建空文件夹:
String key = parentKey + newFolderName;
if (!StringUtils.endsWith(key, "/")) {
key += "/";
}
PutObjectRequest putRequest = PutObjectRequest.builder()
.bucket(parent.getBucket())
.key(key)
.acl("public-read")
.build();
s3Client.putObject(putRequest, RequestBody.empty());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33038 次 |
| 最近记录: |