Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Piotr 'Redelek' Redel, ostatnia modyfikacja: 2007-12-04
Witam wszystkich czytelników po raz kolejny. Tym razem pokażę Wam , że za pomocą skryptów PHP można pakować i rozpakowywać pliki znajdujące się na zdalnym serwerze. Temat troszkę tajemniczy, ale zachęcam do przeczytania artykułu.
Jak wiadomo PHP jest bardzo wszechstronnym językiem kryje wiele funkcji i udostępnia wiele bibliotek, gdyby można było znać je wszystkie to naprawdę świat stał by otworem. Zajmijmy się pierwszym zagadnieniem czyli pakowaniem ZIP. Za poprawne działanie ZIP w php odpowiada biblioteka o nazwie zlib (PHP4.X ZZIPlib). Można ją pobrać ze strony producenta lub zainstalować z paczek dostępnych dla naszego serwera. Troszkę zaszaleję i najpierw pokażę skrypt, a potem wyjaśnię jak to działa i o co w tym chodzi.
<?php $zip = new ZipArchive(); $plik_arch = "testowy.zip"; if ($zip->open($plik_arch, ZIPARCHIVE::CREATE) !==TRUE) { exit ("nie mogę zrobić pliku archiwum <$plik_arch>"); } $zip->addFormString("info.txt","Archiwum o nazwie $plik_arch zostało utowrzone w dniu ".date("Y-m-d H:i:s")); $zip->addFile("plik_testowy.txt"); $zip->addFile("plik_testowy2.txt"); echo "Ilość plików spakowanych: ".(($zip->numFiles)-1) . "\n"; $zip->close(); ?>
Jak widać skrypt jest bardzo prosty i dzięki niemu możemy cieszyć się plikiem zip o nazwie testowy.zip. Prawda, że nie takie trudne? Teraz troszkę wyjaśnię co zrobiliśmy.
Żeby biblioteka zip zadziałała, musimy ją zainicjować i robimy to za pomocą kodu
$zip = new ZipArchive();
Deklarujemy sobie swoją zmienną tak jak pokazałem w przykładzie powyżej (zip). Kolejnym etapem jest utworzenie pliku archiwum, do którego mają być spakowane nasze pliki.
$plik_arch = "testowy.zip"
Sprawdzamy czy nasz plik archiwum może być utworzony na serwerze i czy można go otworzyć
if ($zip->open($plik_arch, ZIPARCHIVE::CREATE) !==TRUE) { exit ("nie mogę zrobić pliku archiwum <$plik_arch>"); }
Jeśli wszystko jest dobrze to skrypt „leci” dalej, ale jeśli z jakichś powodów nie może odczytać pliku lub zapisać go, dostaniemy komunikat z błędem i zakończymy przetwarzanie skryptu.
$zip->addFormString("info.txt","Archiwum o nazwie $plik_arch zostało utowrzone w dniu ".date("Y-m-d H:i:s"))
spowoduje utworzenie pliku info.txt i umieści w nim wpis, o spakowanych plikach i dacie wykonania. Oczywiście możemy dodawać wiele takich wpisów.
Dzięki tym poleceniom dodamy piliki do archiwum:
$zip->addFile("plik_testowy.txt"); $zip->addFile("plik_testowy2.txt");
Ostatnie wpisy z naszego skryptu służą do informowania ile i jakich plików zostało umieszczonych w naszym archiwum. Na samym końcu zwalniamy klasę za pomocą:
$zip->close();
O, i to na tyle pakowania. Zajmijmy się rozpakowywaniem archiwum ZIP.
<?php $zip = new ZipArchive; $plik_arch = "testowy.zip"; if ($zip->open($plik_arch) !== TRUE) { echo "Powstały jakieś błędy sprawdź archiwum lub folder"; } else { $zip->extractTo('rozpakowane'.$plik_arch); $zip->close(); echo "Pliki wypakowane do folderu rozpakowane".$pliki_arch; } ?>
Skrypt rozpakowywania jest bardzo podobny do skryptu pakowania - zmienia się linijka
$zip->extractTo('rozpakowane'.$plik_arch);
Pliki zostaną wypakowane do folderu rozpakowane.
Prawda, że to bardzo proste? Teraz możemy się pokusić o połączenie moich dwóch artykułów „Wysyłanie pliku na serwer, a link do pliku w MySQL” i „PHP i zip, czy to możliwe?”. Dzięki temu pliki będą wysyłane na serwer w formie spakowanej. Oczywiście dzięki PHP można tworzyć archiwa zip oraz rar. Tę działkę zostawiam Wam. Mam nadzieję, że ten artykuł, tak jak i mi, pokazał Wam kolejne możliwości języka PHP.
Źródła:
Piotr 'Redelek' Redel
szukaj: archiwizacja danych kompresja plików pakowanie plików rozpakowywanie plików ZIP RAR PHP
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org