![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR7NfZnykrEDmI3F7B8uwVYbnlX51Sg-fsAnsdV8vIfM_55qB6AE9jJ6BXmr_Gt7Ej_s5EZIeYvwbp1w_0uAV8UEIPeH4opBcK9WbFduutkT4Tu9vfY30e8B9M0D_PJ2Nm_k3AcbvIYZrn/s320/zip.jpg)
Requisitos:
- Windows XP, o Linux
- Apache 2 instalado
- PHP 5 instalado (php_zip)
- CakePhp 1.2, instalado
- MySQL 5, opcional
Objetivo:
Implementar un mecanismo para comprimir archivos y/o carpetas.
Instalación:
- Copiar este componente a /app/controllers/components/zip.php
En el controlador...
class FilesController extends AppController {
var $name = 'Files';
var $components = array('Zip');
function zip() {
// se establece la ruta del folder a comprimir
$folder = WWW_ROOT.'files'.DS.'backup';
// se valida la existencia del folder
if(!file_exists($folder)) {
if(!mkdir($folder)) {
$this->Session->setFlash('Error al crear la carpeta.', 'default', array('class' => 'error'));
return false;
}
}
// se genera el archivo zip
if(is_dir($folder)) {
// se establece la ruta del zip a generar
$dmy_his = date('dmy-his');
$zip_file = $folder.DS.'bk-'.$dmy-his.'.zip';
// se realiza el zip
$this->Zip->begin($zip_file);
$this->Zip->addDir($folder, 'bk-'.$dmy-his);
$this->Zip->close();
if(!file_exists($zip_file)) {
$this->Session->setFlash('Error al generar el archivo zip.', 'default', array('class' => 'error'));
return false;
}
// se forza la descarga del zip generado
$this->redirect('/files/backup/bk-'.$dmy-his.'.zip');
return true;
} else {
$this->Session->setFlash('La carpeta no existe.', 'default', array('class' => 'error'));
return false;
}
}
}
Listo!!!
Enlace Original:
- http://bakery.cakephp.org/articles/SeanCallan/2007/07/18/zip-component
No hay comentarios:
Publicar un comentario