【发布时间】:2012-10-07 16:18:22
【问题描述】:
我知道的很少。 文件夹不是 S3 的概念,它们只是一个零字节对象,其键名使用“/”作为前缀。假设为简单起见,我们称它们为文件夹和文件会使我的问题更容易表达。
可以使用前缀 ="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() 相同,假定所有路径都以文件名结尾。 glob - 运气不好,和上面一样。
由于我已经浪费了半天时间,我希望有人已经处理过这个问题并愿意分享:
注意:我在 python 和 boto 中这样做没有问题。但这不是 python,我必须在 PHP 中为此项目执行此操作。
【问题讨论】:
标签: php amazon-s3 amazon-web-services