| Autor | Zpráva | ||
|---|---|---|---|
| Fisak Profil |
#1 · Zasláno: 29. 8. 2014, 16:45:27
Dobrý den, rád bych si zazipoval jednu složku ale bez určité složky která je uvnitř. Vyhledal jsem si tento kód na zipování:
class ZipArchiveFolder
{
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 = "")
{
$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();
}
}neví někdo jak udělat aby se v zipu nezazipovala určitá složka? např "folder/neco/" |
||
| nemeja Profil |
#2 · Zasláno: 29. 8. 2014, 20:14:37
Jen rychlý nástřel z hlavy. Vyznačeny úpravy
<?
class ZipArchiveFolder
{
protected $jmeno_zipu;
protected $root;
protected $zip;
protected $vynechat;
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->vynechej( "test" );
$this->uloz();
}
public function nactiAdr($cesta = "")
{
$hn = scandir($this->root.$cesta);
foreach ($hn as $file)
{
if ($file == "." || $file == ".." || in_array($file, $this -> vynechat))
{
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 vynechej( $nazev ){
if( is_array( $nazev )){
$this->vynechat = array_merge( $this->vynechat, $nazev );
} else {
$this->vynechat[] = $nazev;
}
}
public function uloz()
{
$this->zip->close();
}
} |
||
| Fisak Profil |
<?php
class ZipArchiveFolder
{
protected $jmeno_zipu;
protected $root;
protected $zip;
protected $vynechat;
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->vynechej($this->vynechat);
$this->uloz();
}
public function nactiAdr($cesta = "")
{
$hn = scandir($this->root.$cesta);
foreach ($hn as $file)
{
if ($file == "." || $file == ".." || in_array($file, $this -> vynechat))
{
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 vynechej( $nazev ){
if( is_array( $nazev )){
$this->vynechat = array_merge( $this->vynechat, $nazev );
} else {
$this->vynechat[] = $nazev;
}
}
public function uloz()
{
$this->zip->close();
}
}
new ZipArchiveFolder('./', "uploads/backup/".$zip_name.".zip", "uploads/backup/");ale nějak to nefunguje :-/ |
||
| Alphard Profil |
#4 · Zasláno: 31. 8. 2014, 14:45:04
Ten kód postrádá logiku. Metodu
vynechej (otřesný název mimochodem) voláš s parametrem $this->vynechat, který ta metoda vlastně plní. Konstruktoru dáváš třetí parametr, který vůbec nedefinuje. Nic ve zlém, ale po takové době zde na diskusi bych čekal víc, než copy&paste :-)
A až opravíš tuhle propagaci parametru, ještě narazíš na problém s tím, že [#2] nemeja očekává ve $vynechat jednoduchý název adresáře, nikoliv celou cestu, kterou se tam snažíš vkládat. |
||
|
Časová prodleva: 12 let
|
|||
0