2012-10-07 2 views
7

내가 아는 몇 가지. 폴더는 S3 개념이 아니며 접두사 '/'를 사용하는 키 이름이있는 0 바이트 개체에 지나지 않습니다. 단순화를 위해 폴더 및 파일이라고 부르는 것을 가정하면 문구를 쉽게 이해할 수 있습니다.aws sdk php 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() - no use misses 일부 폴더 (빈 것들), 확실히 배열에서 중복을 제거 할 수 있지만 놓친 폴더의 문제가 존재합니다 pathinfo() - dirname()과 같은 방식으로 작동하며, 모든 경로가 filename으로 끝나는 것으로 가정합니다. glob - 운이 없다, 위와 같습니다.

참고 : 나는 파이썬과 BOTO에서이 일을 아무 문제가 이미 누군가가이 처리하고 공유하는 신경 바라고 있어요 이것에 반나절 낭비했기 때문에

. 하지만 이것은 파이썬이 아니므로 PHP에서이 프로젝트를 수행해야합니다.

답변

관련 문제