2012-10-07 57 views
7

một số điều tôi biết. Các thư mục không phải là một khái niệm về S3 mà chúng chỉ đơn thuần là một đối tượng không có byte với các tên khóa sử dụng '/' làm tiền tố. Giả sử rằng chúng tôi gọi chúng là các thư mục và tệp để đơn giản sẽ làm cho câu hỏi của tôi dễ dàng hơn trong cụm từ.aws sdk php để liệt kê các thư mục s3

Có thể thực hiện s3-> get_object_list (..) bằng tiền tố = "root /" và nhận tất cả các tệp/thư mục. Vấn đề của tôi là thế này.

Cung cấp danh sách thư mục và thư mục con cho ví dụ:

root/ 
root/folder1/ 
root/folder1/file1.txt 
root/folder2/ 
root/folder3/file2.txt 

Làm cách nào để chỉ liệt kê các thư mục. Tôi đã hy vọng để ngăn chặn danh sách tất cả các tập tin (ngay cả trong phản ứng mà họ không cần phải được trả lại) nhưng get_object_list trong php hiện không hỗ trợ commonPrefixes ref: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list mặc dù doc nói mã rõ ràng không và sử dụng delimiter sẽ thực sự chỉ trở lại các tệp trong thư mục gốc (tiền tố)

Tôi tự hỏi liệu có ai đã sử dụng bất kỳ kỹ thuật hậu trả lời hoặc yêu cầu nào để trợ giúp với tình huống như vậy không.

Tôi đã thử mọi kết hợp tiền tố, dấu tách và điểm đánh dấu mà tôi có thể nghĩ đến. Không tốt với PCRE nhưng chắc chắn tôi có thể sử dụng nó mà tôi chỉ có một thư mục sâu cấp nhưng tôi không biết cách xây dựng một thư mục cho trường hợp này. Vì yêu cầu của tôi không hoạt động nên tôi đã chấp nhận phản hồi với tất cả các tệp và thư mục và hy vọng sắp xếp nó trong php ... hoặc vì vậy tôi nghĩ

Tôi đã thử trả lời bài đăng: dirname() - không sử dụng lần bỏ lỡ ra một số thư mục (trống), chắc chắn tôi có thể loại bỏ trùng lặp trong mảng nhưng vấn đề của thư mục bị mất tồn tại pathinfo() - hoạt động theo cùng một cách như dirname(), giả định rằng tất cả các đường dẫn kết thúc bằng tên tệp. glob - không may mắn, giống như trên.

Kể từ khi tôi đã lãng phí một nửa ngày về vấn đề này tôi hy vọng ai đó đã giải quyết này và sẽ quan tâm để chia sẻ:

lưu ý: Tôi không có vấn đề làm điều này trong python và boto. Nhưng đây không phải là python và tôi phải làm điều này trong PHP cho dự án này.

Trả lời

Các vấn đề liên quan