Skocz do zawartości
Zaloguj się, aby obserwować  
kori

kompresja i dekompresja zip

Polecane posty

Pakowanie mi działa, wypakowanie nie, proszę o pomoc.

 

pakowanie wszystkich plików w folderze do pliku backup.zip w nadrzędnym folderze
zip('../backup.zip', './');

z pliku backup.zip będącego w nadrzędnym folderze wypakowanie

pliku o nazwie: '217.99.43.67' do aktualnego folderu

unzip('../backup.zip', './217.99.43.67');

 

function zip($zipfile, $directory_files)
{
if ($handle = opendir($directory_files))
  {
    $zip = new ZipArchive();

    if ($zip->open($zipfile, ZIPARCHIVE::CREATE)!==TRUE)
    exit("cannot open <$filename>\n");

    while (false !== ($file = readdir($handle)))
    if(strpos($file,'.')>0) $zip->addFile($directory_files.$file); //echo "$file\n";

    closedir($handle);
    echo "numfiles: " . $zip->numFiles . "\n";
    echo "status:" . $zip->status . "\n";
    $zip->close();
    echo 'Zip File:'.$zipfile . "\n";
  }
}

function unzip($zipfile, $unzip)
{
  $unzip_dir=substr($unzip,0,strrpos($unzip,'/')+1);
  $unzip_file=substr($unzip,strrpos($unzip,'/')+1,9999);

  $zip = new ZipArchive;
  $res = $zip->open($zipfile);
  if ($res === TRUE)
  {
    $zip->extractTo($unzip_dir, $unzip_file);
    $zip->close();
    echo 'ok';
  } else echo 'failed';

}


zip('../backup.zip', './');
unzip('../backup.zip', './217.99.43.67');

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A wykonuje się extractTo czy wypluwa failed?

Jakiś komunikat się pojawia, coś w logach?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

1. dodałem: error_reporting(E_ALL); ini_set("display_errors", 1);

Komunikat leci ok. Błędów php brak.

 

2. Gdy wywaliłem $unzip_file z $zip->extractTo($unzip_dir, $unzip_file);

to wypakowalo, tylko że ja chce wypakować tylko jeden pliczek

3. Zmieniłem: $unzip_file z $zip->extractTo($unzip_dir, $unzip_file);
na: $unzip_file z $zip->extractTo($unzip_dir, './'.$unzip_file);

 

i o dziwo wreszcie wypakowalo moj pliczek, aczkolwiek nie rozumiem czemu musialem dodac './'

ci co pisali manuala walneli błąd?


z manuala http://php.net/manual/en/ziparchive.extractto.php:

$zip = new ZipArchive;
$res = $zip->open('test_im.zip');
if ($res === TRUE) {
    $zip->extractTo('/my/destination/dir/', array('pear_item.gif', 'testfromfile.php'));
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

ok wyczaiłem gdzie błąd był, w samym pakowaniu

stąd ta './' wymagana przy dekompresji

 

pierwsza linia przed, druga po zmianie
if(strpos($file,'.')>0) $zip->addFile($directory_files.$file);

if(strpos($file,'.')>0) $zip->addFile($directory_files.$file, $file);

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×