Witam, potrzebuję aby w mojej aplikacji była możliwość przeglądania plików ZIP, z RAR sobie jak narazie poradziłem (Czytanie plików, Listing folderów, Przeglądanie poszczególnych folderów) lecz z ZIP'em mam kłopoty...

Z 4 tygodnie temu pisałem klasę ale nic już z tego nie pamiętam...

Znalazłem coś takiego:
  1. <?php
  2. public function SetDirectory($Dir)
  3. {
  4. while ($zip_entry = zip_read($this->Zip)) 
  5. {
  6. $file = basename(zip_entry_name($zip_entry));
  7. if($file == $Dir)
  8. {
  9. $Resource = true;
  10. break;
  11. }
  12. }
  13.  
  14. if(isset($Resource))
  15. {
  16. zip_entry_open($this->Zip, $zip_entry, 'r');
  17. $this->StartListing();
  18. }
  19. }
  20. ?>


Ale jak się domyślam to będzie szukać po głównym folderze innych folderów i zatrzymywać się aby pobrać RESOURCE, jednak potrzebuje pełnej swobody poruszania się po folderach, nie tylko po tych pierwszych, po za tym pętla nie działa... (brak resource od zip_open, chociarz w konstruktorze jest RESOURCE ID #X gdy sprawdzam przez print_r)

  1. <?php
  2. private function StartListing()
  3. {
  4. if ($this->Zip) 
  5. {
  6. while ($zip_entry = zip_read($this->Zip)) 
  7. {
  8. $file = basename(zip_entry_name($zip_entry));
  9. $pathinfo = pathinfo($file);
  10.  
  11. if($pathinfo['extension'] == '')
  12. $ZipEntryType = 'directory';
  13. else
  14. $ZipEntryType = 'file';
  15.  
  16. $this->OutputArray[$file] = array('Size' => zip_entry_filesize($zip_entry), 'Type' => $ZipEntryType, 'Last modified' => filectime($InputDir));
  17. }
  18. }
  19. }
  20. ?>


Ta funkcja zbiera pliki i foldery, zapisując w tablicy OutputArray która jest tablicą wewnątrz klasy.

Mój problem:
- Chciałbym przeglądać poszczególne pliki i foldery archiwum ZIP, jak to zmieścić w funkcji SetDirectory() aby funkcja StartListing() mogła wszystko odczytać (lub nie musi ona, może SetDirectory())

Pozdrawiam, WebNuLL(Babcia@Stefa)