我上传了4个对象到S3.对象键如下:
4eec12eb0a588620cccad16f/MumDad70s.jpg
4eec12eb0a588620cccad16f/NathanI-1.jpg
4eec12eb0a588620cccad16f/ProfilePic.png
4eec12eb0a588620cccad16f/nathan-orange.jpg
Run Code Online (Sandbox Code Playgroud)
我请求对象的代码是:
var req = new ListObjectsRequest()
.WithBucketName(BucketName)
.WithPrefix(jobid + "/")
.WithDelimiter("/");
var objs = _s3Client.ListObjects(req);
Run Code Online (Sandbox Code Playgroud)
在响应中,即使前缀实际上不是它自己的对象,而是仅仅是实际对象的键前面的字符串,我得到以下5个对象返回:
4eec12eb0a588620cccad16f/
4eec12eb0a588620cccad16f/MumDad70s.jpg
4eec12eb0a588620cccad16f/NathanI-1.jpg
4eec12eb0a588620cccad16f/ProfilePic.png
4eec12eb0a588620cccad16f/nathan-orange.jpg
Run Code Online (Sandbox Code Playgroud)
为什么返回的前缀好像是一个唯一的对象?如何只返回具有指定前缀的文件,而不必对列表进行后置过滤以摆脱前缀对象?
按照此处(是的,我意识到您可能不需要 Java 文档):http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#listObjects %28com.amazonaws.services.s3.model.ListObjectsRequest%29
它指出:
如果在此存储桶上使用前缀值“foo/”和分隔符值“/”调用 listObjects,则返回一个 ObjectListing,其中包含一个键(“foo/boo”)和公共前缀列表中的一个条目(“foo”) /酒吧/”)。要更深入地了解虚拟层次结构,请再次调用 listObjects,将 prefix 参数设置为任何有趣的公共前缀,以列出该前缀下的各个键。
强调我的。看起来这实际上是预期的功能 - 返回所有键共有的前缀。
| 归档时间: |
|
| 查看次数: |
1679 次 |
| 最近记录: |