miércoles, 15 de diciembre de 2010

Cakephp: Zip Component


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:

  1. Copiar este componente a /app/controllers/components/zip.php
Uso:

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

Las + Populares