Ładowanie Ładowanie

Post: > Klasa PclZip: jak obsługiwać pliki ZIP w PHP?

strony: 1 | 2 następna »
wydrukuj: print publikuj: wykop dodaj do flakera Dodaj jako nius na OSnews.pl! delicious

Klasa PclZip: jak obsługiwać pliki ZIP w PHP?

TAGI: pclzip , php , zip , archiwum , klasa
2010-03-10 20:56:00 | Tomasz Lisiewicz
Klasa PclZip: jak obsługiwać pliki ZIP w PHP?

Archiwizowanie plików może okazać się bardzo przydatne w naszej webowej aplikacji. Pisanie własnych mechanizmów do tego celu raczej nie ma jednak sensu – niemal na pewno będą gorsze, niż to co jest już dostępne. Przedstawiamy propozycję poradzenia sobie z archiwami dzięki pewnej przydatnej klasie.

Najprostszą metodą wykorzystania archiwizera z poziomu PHP jest oczywiście sięgnięcie po funkcję exec – zakładając, że pracujemy na stosie LAMP, można za jej pomocą spakować plik do archiwum tar następująco:

exec(tar cfvz ".$lokalizacjaPliku."/".$nazwaPliku.".tar.gz ".$doSpakowania.");

a rozpakować przez

exec(tar xvzf ".$lokalizacjaPliku."/".$nazwaPliku.".tar.gz);

Nie jest to jednak dobry pomysł z dwóch względów. Po pierwsze aplikacja webowa nie powinna mieć dostępu do warstwy systemu operacyjnego serwera. Po drugie, gdy przyjdzie nam np. udostępnić tak spakowany plik użytkownikom, większość z nich nie będzie wiedziała co z nim zrobić: dla nich synonimem archiwum jest ZIP a nie jakiś „tarball”.

Rozwiązaniem tych problemów jest klasa PclZip, stworzona przez Vincenta Blaveta z serwisu phpconcept.net. Wykorzystywana m.in. w WordPressie, jest całkiem prosta do zastosowania we własnej aplikacji. Pozwala na tworzenie archiwów ZIP, rozpakowywanie ich oraz modyfikowanie ich zawartości.

Przed którąkolwiek z tych czynności, należy utworzyć instancję obiektu, zawierającego archiwum na którym będziemy pracowali. Odbywa się to następująco:

require_once('pclzip.lib.php');
$archiwum = new PclZip('tmp/archiwum.zip');

Archiwum można następnie manipulować za pomocą publicznych metod powiązanych z obiektem PclZip. Na przykład tworzenie nieistniejącego wcześniej archiwum odbywa się za pomocą metody create(). Do rozpakowania służy metoda extract(). Każda z nich ma oczywiście swoje argumenty, opisane szczegółowo w dokumentacji. Dalej przedstawiamy najbardziej typowe zastosowania:

Najnowsze wiadomości

reklama

strony: 1 | 2 następna »
wydrukuj: print publikuj: wykop dodaj do flakera Dodaj jako nius na OSnews.pl! delicious

Czytaj webhosting.pl: