Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Piotr 'Redelek' Redel, ostatnia modyfikacja: 2007-12-04
archiwizacja danych
kompresja plików
pakowanie plików
rozpakowywanie plików
ZIP
RAR
PHP 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ż:
blog
porady
artykuły
recenzje
wiadomości

© 2004-2008 copyright by webmade.org