用于列出s3文件夹的aws sdk php
我知道的事情很少。 文件夹不是S3的概念,它们只是一个零字节的对象,键名使用“/”作为前缀。假设为了简单起见我们称之为文件夹和文件,那么我的问题就更容易表达了 可以使用prefix=“root/”执行s3->get_object_list(..)并获取所有文件/文件夹。我的问题是这个 给定文件夹和子文件夹的列表,例如用于列出s3文件夹的aws sdk php,php,amazon-s3,amazon-web-services,Php,Amazon S3,Amazon Web Services,我知道的事情很少。 文件夹不是S3的概念,它们只是一个零字节的对象,键名使用“/”作为前缀。假设为了简单起见我们称之为文件夹和文件,那么我的问题就更容易表达了 可以使用prefix=“root/”执行s3->get_object_list(..)并获取所有文件/文件夹。我的问题是这个 给定文件夹和子文件夹的列表,例如 root/ root/folder1/ root/folder1/file1.txt root/folder2/ root/folder3/file2.txt 如何
root/
root/folder1/
root/folder1/file1.txt
root/folder2/
root/folder3/file2.txt
如何仅列出文件夹。我希望阻止列出所有文件(即使在响应中也不需要返回),但php中的get_object_list当前不支持commonPrefixes ref:
即使文档这么说,代码显然没有,使用分隔符实际上只返回根文件夹(前缀)中的文件
我想知道是否有人在回复或请求后使用过任何技术来帮助解决这种情况
我已经尝试了所有我能想到的前缀、分隔符和标记的组合。PCRE不太好,但我可以确定我只能使用一级深的文件夹,但我不知道如何为这种情况构建一个。由于我的请求不起作用,我继续接受所有文件和文件夹的响应,并希望用php进行排序。。。至少我是这么想的
我在回复中尝试过:
dirname()-no use会丢失一些文件夹(空文件夹),当然我可以删除数组中的重复文件夹,但丢失文件夹的问题仍然存在
pathinfo()-与dirname()的行为方式相同,假定所有路径都以文件名结尾。
地球仪-没有运气,同上
既然我已经在这上面浪费了半天时间,我希望有人能处理好这件事,并愿意与大家分享:
注意:我在python和boto中这样做没有问题。但是这不是python,我必须用PHP来完成这个项目。你把
get\u object\u list()
和list\u objects()
搞混了。见: