我知道的一些事情。 文件夹不是S3的概念,它们只是一个零字节对象,其键名使用'/'作为前缀。假设我们称它们为文件夹和文件以简单起见会使我的问题更容易用语。
可以使用prefix =“root /”执行s3-> get_object_list(..)并获取所有文件/文件夹。我的问题是这个。
给出例如文件夹和子文件夹的列表。
root/
root/folder1/
root/folder1/file1.txt
root/folder2/
root/folder3/file2.txt
如何仅列出文件夹。我希望阻止列出所有文件(即使在响应中它们不需要返回)但是php中的get_object_list当前不支持commonPrefixes ref:http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list 即使文档说这样代码显然没有,使用分隔符实际上只会返回根文件夹中的文件(前缀)
我想知道是否有人使用任何技术回复后或请求帮助解决这种情况。
我已经尝试了我能想到的前缀,分隔符和标记的每个组合。对PCRE不太好,但我确定我可以使用我只有一个级别的深层文件夹,但我不知道如何为这种情况构建一个。由于我的请求不起作用,我继续接受所有文件和文件夹的响应,并希望在php中排序...或者我认为
我在帖子回复中尝试过: dirname() - 没有使用错过了一些文件夹(空的),确定我可以删除数组中的重复项但存在错过文件夹的问题 pathinfo() - 与dirname()的行为方式相同,假设所有路径都以filename结尾。 glob - 没有运气,和上面一样。
由于我已经浪费了半天的时间,我希望有人处理过此事并愿意分享:
注意:我在python和boto中执行此操作没有问题。但这不是python,我必须在PHP中为这个项目做这个。
答案 0 :(得分:3)
您将get_object_list()
与list_objects()
混为一谈。请参阅:https://forums.aws.amazon.com/thread.jspa?threadID=106277&tstart=0