Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] i zip, pakownie całego katalogu
Lejto
post 24.04.2008, 17:40:59
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Mam kod który tworzy archiwum zip
  1. <?php
  2. $zip = new ZipArchive();
  3. $plik_arch = "testowy.zip";
  4. if ($zip->open($plik_arch, ZIPARCHIVE::CREATE) !==TRUE) {
  5. exit ("nie mogę zrobić pliku archiwum <$plik_arch>");
  6. }
  7.  
  8. $zip->addFormString("info.txt","Archiwum o nazwie $plik_arch zostało utowrzone w dniu ".date("Y-m-d H:i:s"));
  9. $zip->addFile("plik_testowy.txt");
  10. $zip->addFile("plik_testowy2.txt");
  11. echo "Ilość plików spakowanych: ".(($zip->numFiles)-1) . "\n";
  12. $zip->close();
  13. ?>

Nie che wypisywać kolejno plików
  1. <?php
  2. $zip->addFile("plik_testowy.txt");
  3. ?>

tylko chce spakować cały katalog jak to zrobić?
Pobrać nazwy plików w danym katalogu wrzycić je do tablicy i potem w pętli wykonać
  1. <?php
  2. $zip->addFile("plik_testowy.txt");
  3. ?>

?
Czy jak?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
erix
post 24.04.2008, 17:50:35
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Klasa DirectoryIterator:
http://www.jellyandcustard.com/2006/05/18/...t-files-in-php/

i wpakuj w funkcję rekurencyjną.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Lejto
post 24.04.2008, 18:04:28
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


o to chodzi?
  1. <?php
  2. 1.
  3. $dir = new DirectoryIterator( '/www/test/' );
  4.  2.
  5. foreach($dir as $file )
  6.  3.
  7. {
  8.  4.
  9. if(!$file->isDot() && !$file->isDir()) {
  10.  5.
  11. echo "FileName: ".$file->getFilename();
  12.  6.
  13. echo "Size: ".number_format(($file->getSize()/1024),2)." Kb";
  14.  7.
  15. echo "Date Created: ".date("D d M Y H:i:sa",$file->getCTime());
  16.  8.
  17. }
  18.  9.
  19. }
  20. ?>


--------------------
Go to the top of the page
+Quote Post
erix
post 24.04.2008, 18:09:38
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




W dobrym kierunku idziesz. ;]

Teraz ubierz to w funkcję i wykonuj ją rekurencyjnie.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Lejto
post 24.04.2008, 18:40:02
Post #5





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


to wydłubałem:
  1. <?
  2.  
  3.  $dir = new DirectoryIterator( 'galeria/obrazy/' );
  4.  $zip = new ZipArchive();
  5.  $plik_arch = "testowy.zip";
  6.  
  7.  if ($zip->open($plik_arch, ZIPARCHIVE::CREATE) !==TRUE) {
  8. exit ("nie mogę zrobić pliku archiwum <$plik_arch>");
  9. }
  10.  
  11. foreach($dir as $file )
  12.  
  13. {
  14.  
  15. if(!$file->isDot() && !$file->isDir()) {
  16.  
  17.  echo "FileName: ".$file->getFilename();
  18.  echo '<br>';
  19.  
  20. $zip->addFile($file->getFilename());
  21.  
  22. }
  23.  
  24. }
  25. echo "Ilość plików spakowanych: ".(($zip->numFiles)-1) . "\n";
  26. $zip->close();
  27. ?>

pokazuje listę plików ale ich nie pakuje

muszę utworzyć na serwerze plik .zip czy kod to zrobi?

Ten post edytował Lejto 24.04.2008, 18:31:24


--------------------
Go to the top of the page
+Quote Post
erix
post 24.04.2008, 18:45:00
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. $zip->addFile($file->getFilename());
  3. ?>

=>
  1. <?php
  2. $zip->addFile($file->getPathname().'/'.$file->getFilename());
  3. ?>

?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Lejto
post 24.04.2008, 18:52:18
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


  1. <?
  2.  $dir = new DirectoryIterator( 'galeria/obrazy/' );
  3.  $zip = new ZipArchive();
  4.  $plik_arch = "testowy.zip";
  5.  
  6.  if ($zip->open($plik_arch, ZIPARCHIVE::CREATE) !==TRUE) {
  7. exit ("nie mogę zrobić pliku archiwum <$plik_arch>");
  8. }
  9.  
  10. foreach($dir as $file )
  11.  
  12. {
  13.  
  14. if(!$file->isDot() && !$file->isDir()) {
  15.  
  16.  echo "FileName: ".$file->getFilename();
  17.  echo '<br>';
  18.  
  19. $zip->addFile($file->getPathname().'/'.$file->getFilename());
  20. }
  21.  
  22. }
  23. echo "Ilość plików spakowanych: ".(($zip->numFiles)-1) . "\n";
  24. $zip->close();
  25. ?>

nie pakuje


--------------------
Go to the top of the page
+Quote Post
erix
post 24.04.2008, 19:13:03
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Hmm, w sumie nie wiem, dlaczego tak się dzieje...
Żadnego błędu? W jakim formacie zwraca Ci ścieżki?

BTW: zobacz w komentarzach: http://pl.php.net/manual/pl/ref.zip.php


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Lejto
post 14.05.2008, 17:06:10
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


format:
FileName: 135614dsc00515_filtered.jpg

sory że tak późno już ale nie mogę spakować nawet pojedynczego pliku
  1. <?
  2.  
  3. $zip = new ZipArchive();
  4. $plik_arch = "testowy.zip";
  5. if ($zip->open($plik_arch, ZIPARCHIVE::CREATE) !==TRUE) {
  6. exit ("nie mogę zrobić pliku archiwum <$plik_arch>");
  7. }
  8.  
  9.  $zip->addFile("inedx.php.txt");
  10. $zip->addFile("plik_testowy2.txt");
  11. echo "Ilość plików spakowanych: ".(($zip->numFiles)-1) . "\n";
  12. $zip->close();
  13. ?>

skrypt uruchamiam na serwerze nie na localu
Wynik:
Ilość plików spakowanych: -1


Nie pakuje w ogóle


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 00:17