Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zipArchive - jak z robić filtr na rozszerzenia plików ?, pomijanie plików przy rozpakowaniu z innym rozszerzeniem od jpg i json
Sztef89
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.12.2010

Ostrzeżenie: (0%)
-----


Witam (IMG:style_emoticons/default/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 !
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sabat24
post
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 14:54