Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zipArchive - jak z robić filtr na rozszerzenia plików ?
Forum PHP.pl > Forum > PHP
Sztef89
Witam smile.gif

Potrzebny jest mi skrypt, który będzie pomijał przy wypakowywaniu pliki z rozszerzeniem innym niż *.jpg i *.json. Do tej pory napisałem wypakowywanie wszystkich plików jakie są w archiwum.


  1. $zip = new ZipArchive;
  2.  
  3. if ($zip->open($file) !== TRUE) echo 'blad';
  4. else{
  5. $zip->extractTo($folder);
  6. $zip->close();
  7. echo 'ok';
  8. }


Z manuala wyczytałem, że funkcja extractTo() przyjmuje drugi parametr - listę plików - ta lista to chyba pliki jakie ma wypakować... tylko jak tą listę stworzyć i przefiltrować aby zostały same pliki jpg i json ?

Będę bardzo wdzięczny za pomoc !
vokiel
Możesz wypakować wszystko do katalogu tymczasowego, następnie z niego przekopiować wybrane pliki, albo usunąć niepasujące i przekopiować resztę.

Innym rozwiązaniem jest iteracja po wszystkich plikach w zipie i wypakowywanie pojedynczo wybranych plików.
sabat24
Drugi parametr jest tablicą nazw plików do wypakowania. Inaczej mówiąc, musisz znać konkretne pliki, które chcesz wypakować. Możesz to zrobić w taki sposób:
  1. $extensions_to_unpack = array ('jpg', 'json');
  2. $files_to_unpack = array();
  3. if ($zip->open($file)) {
  4. for($i = 0; $i < $zip->numFiles; $i++) {
  5. $filename = $zip->getNameIndex($i)
  6. if (in_array(substr(strrchr($filename, '.'), 1), $extensions_to_unpack)) {
  7. $files_to_unpack[] = $filename;
  8. }
  9. }
  10. if (!empty($files_to_unpack)) {
  11. $zip->extractTo($folder, $files_to_unpack);
  12. }
  13. $zip->close();
  14. }

Oczywiśćie możesz sobie darować extracTo i w pierwszej pętli wypakować dany plik, który przeszedł weryfikację. Nie wiem, jak się to zachowa, gdy w archiwum masz foldery zamiast samych plików.
Sztef89
Dzięki Wam za pomysły i przykład ! smile.gif Coś z tego wymodzę wink.gif Pozdrawiam !

--EDIT--

Sabat24, Twoje rozwiązanie działa również dla katalogów ! Super ! Tego własnie potrzebowałem ! Wielkie dzięki ! thumbsupsmileyanim.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.