Autor Zpráva
nethor
Profil
Zdravím,
zipuji adresář pomocí zde uvedení třídy Zipuj : Rekurzivní zipování.
To funguje. ale potřeboval bych zazipovat i základní adresář, který se zipuje.
Tedy tak, aby na 1. úrovni byl 'zakladni_adresar' a ne rovnou soubory v něm obsažené.
Třídu jsem upravil, adresář se v zipu vytvoří, ale soubory jsou vedle něj a ne v něm:
Co je špatně?

class Zipuj {
    protected $zip;
    public $jmeno_zipu;
    public $root;
  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 -> zip -> addEmptyDir(basename($root));              //  přidá základní adresář
    self::nactiAdr ();
    self::uloz ();
      }         
    public function nactiAdr ($cesta = "") {        
      $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);
        self::nactiAdr ($cesta."/".$file);
          }
      else     $this -> zip -> addFile ($this -> root.$cesta."/".$file, $cesta."/".$file); 
            }
      }       
  public function uloz () {
      $this -> zip -> close ();
      }
    }

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:

0