Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Rozpakowywanie pliku zip, limit 1KB na plik, Skrypt zapisuje tylko część pliku, do 1KB
NeronRS
post 16.08.2012, 15:46:25
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 17.06.2008
Skąd: Lasowice

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


Witam, napisałem skrypt, który rozpakowuje archiwum zip. Niestety pliki większe niż 1KB obcina i zapisuje tylko 1KB danych, resztę pomija i przechodzi do następnego pliku. Nie wiem co może być przyczyną
  1. function bettermkdir($link)
  2. {
  3. $link2 = $link;
  4. while (!is_dir($link))
  5. {
  6. if (!@mkdir($link2)) $link2 = substr($link2,0,strrpos($link2,'/'));
  7. else $link2 = $link;
  8. }
  9. }
  10.  
  11. function ezip($zip,$gdzie)
  12. {
  13. if (!is_dir($gdzie)) bettermkdir($gdzie);
  14. $zip = zip_open($zip);
  15. while($lista_zpiow = zip_read($zip))
  16. {
  17. $konkretny_zip = zip_entry_name($lista_zpiow);
  18.  
  19. $gdzie_zapisac = $gdzie.$konkretny_zip;
  20.  
  21. if (!is_dir(substr($gdzie_zapisac,0,strrpos($gdzie_zapisac,'/'))))
  22. bettermkdir(substr($gdzie_zapisac,0,strrpos($gdzie_zapisac,'/')));
  23.  
  24. file_put_contents($gdzie_zapisac,zip_entry_read($lista_zpiow));
  25. }
  26. }
  27.  
  28. ezip('solid.zip', 'rozpakowane/');


Znalazłem rozwiązanie i piszę jak by komuś było potrzebne w przyszłości. Funkcja zip_entry_read jako drugi parametr przyjmuje rozmiar pliku jaki ma pobrać, jeżeli nie zostanie wprowadzony bazowo jest 1024. Z pomocą przychodzi funkcja zip_entry_filesize, która zwraca rozmiar rozpakowanego ciągu znaków.

Wystarczy zmienić linię 24
  1. file_put_contents($gdzie_zapisac,zip_entry_read($lista_zpiow,zip_entry_filesize($lista_zpiow)));


Proszę o zamknięcie tematu.
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: 14.08.2025 - 12:45