- PHP


Obsługa archiwów ZIP w PHP


Witam, poruszę tutaj mało znany temat. Pokażę wam, jak za pomocą skryptów PHP można pakować i rozpakowywać pliki znajdujące się na zdalnym serwerze.

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. Najpierw pokażę skrypt, a potem wyjaśnię jak działa.

Pakowanie plików za pomocą PHP


<?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.

Żeby biblioteka zip zadziałała, musimy ją zainicjować i robimy to za pomocą kodu

$zip = new ZipArchive();

Deklarujemy 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();

Rozpakowywanie plików za pomocą PHP


<?php
$zip = new ZipArchive;
$plik_arch = "testowy.zip";
if ($zip->open($plik_arch) !== TRUE) {
 
  echo "Wystąpił błąd 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.


InformacjeRaportuj | Drukuj

Data dodania: 03-10-2017 14:53Autor:admin
Ilość wyświetleń:422Komentarzy: 0
Komentarze
Brak komentarzy.
Dodaj komentarz
Zaloguj się, żeby móc dodawać komentarze.