CakePHP ZipComponent
Precisava criar um componete muito simples para o PHP, poderia eu nem ter criado um coponent, pois minha necessidade era apenas descompactar arquivos zip, para um determinado diretório, para isso no PHP 5 temos a classe ZipArchive, porém o simples pode complicar então resolvi desenvolver a feature de descompactar o arquivo Zip, utilizando em forma de component.
Segue o mesmo a seguir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | < ?php class ZipComponent extends Object { public $zipFile; private $zip; public $extractDirectory; public function setFile($zipFile) { $this->zipFile = $zipFile; $this->zip = new ZipArchive(); } public function setExtractDirectory($extractDirectory) { $this->extractDirectory = $extractDirectory; } public function extract($zipFile = null, $extractDirectory = null) { if (!is_null($zipFile)) { $this->setFile($zipFile); } if (!is_null($extractDirectory)) { $this->setExtractDirectory($extractDirectory); } if ($this->zip->open($this->zipFile)) { $this->zip->extractTo($this->extractDirectory); $this->zip->close(); return true; } return false; } } ?> |
Para utilizar o mesmo basta no controller usar:
1 2 3 4 5 6 7 8 9 | public $components = array('Zip'); public function add() { if ($this->Zip->extract($zipFile, $directory)) { print 'yes'; } else { print 'no'; } } |
Preciso melhorar o component, verificar se o diretório tem permissão de escrita, verificar os arquivos dentro do zip que são válidos e excluir os não validos, mas por início ele está assim e funciona.
Trackbacks & Pingbacks