Autor Zpráva
Neznamy
Profil *
Dobrý večer,
objevil jsem jak zazipovat složku: Archivace složky pomocí zip.lib.php.
To mě potěšilo, ale potřeboval bych zazipovat složku obsahující další složky a tento kod dělá problémy se složkami jak jsem si všiml. Nezná někdo nějáký způsob jak toto napravit?
Davex
Profil
Nejčastější potíže s PHP (FAQ) » Rekurzivní zipování
Neznamy
Profil *
Díky moc vyzkouším ;)
neznamy
Profil *
Děkuji funguje, problém je ale v tom, že jako jméno složky používám ip adresu... (to se nedá změnit celý je to postavený na tom).
všechno se to zazipuje, ale ta ip adresa se nepřenese a složka uvnitř zipu je bez názvu. Windows to nevidí vůbec. 7 zip ano, ale přece jen bych chtěl, aby to většině lidí fungovalo a já sám jsem původně použil windowsáckej. Mohl by mě někdo alespon nasměrovat jak tento problém řešit?
neznamy
Profil *
zjistli jsem, že to s proměnnou nesouvisí... Jak teda můžu dosáhnout toho, abych mohl alespon nejak ovlivnit název složky uvnitř? Takhle se mi vytvoří, ale beze jména.


fajn tak sem na to přišel stačí trošku přemýšlet :D

<?php
class Zipuj
{
    protected $jmeno_zipu;
    protected $root;
    protected $zip;
 
    public function __construct($root = ".", $jmeno_zipu = "zip.zip")
    {
        $this->root = $root;
        $this->jmeno_zipu = $jmeno_zipu;
        $this->zip = new ZipArchive();
        $this->zip->open($this->jmeno_zipu, ZIPARCHIVE::CREATE);
        $this->nactiAdr();
        $this->uloz();
    }
 
    public function nactiAdr($cesta = "web")
    {
        $hn = scandir($this->root.$cesta);
        foreach ($hn as $file)
        {
            if ($file == "." || $file == "..")
            {
                continue;
            }
            if (is_dir($this->root.$cesta."/".$file))
            {
                $this->zip->addEmptyDir($cesta."/".$file);
                $this->nactiAdr($cesta."/".$file);
            }
            else
            {
                $this->zip->addFile($this->root.$cesta."/".$file, $cesta."/".$file);
            }
        }
    }
 
    public function uloz()
    {
        $this->zip->close();
    }
}
 
// zazipuje nám vše na cestě zadané v první parametru a výsledný zip pojmenuje dle druhého parametru
$zalohuj = new Zipuj($cesta, 'zaloha.zip'); 

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: