sexta-feira, 18 de janeiro de 2013

Zipando arquivos com Zend Framework

Hoje vou explicar como podemos comprimir arquivos em .zip utilizando a classe Zend_Filter_Compress_Zip do Zend Framework.

Versão do meu Zend Framework: 1.12 (a ultima versão antes do ZF2)

O problema
Algumas vezes precisamos gerar uma coleção de arquivos e comprimi-los em um unico lugar para efetivar o download ao usuario. Esse problema pode ser facilmente resolvido com as classes de ZIP do PHP mas é muito melhor utilizar uma classe util do Zend Framework que agiliza todo o seu tempo de desenvolvimento além de ter maior rigor nessa compressão.
 Ta mas e ai, como faço para utilizar essa Zend_Filter_Compress_Zip ?


O uso é bem simples veja:
USO DA Zend_Filter_Compress_Zip
  1. /**
  2. * @Desc Exemplo simples de compressão de arquivos
  3. */
  4. public function exemplozipAction()
  5.    $zip = new Zend_Filter_Compress_Zip();  
  6.    
  7.    /* O SEU ZIP COM O PATH E NOME */
  8.    $zip->setArchive("/conteudo/exemplo.zip");
  9.    /* O DESTINO */
  10.    $zip->setTarget("/conteudo/");
  11.                
  12.    /* O ARQUIVO OU PASTA COM OS ARQUIVOS QUE SERÃO COMPRIMIDOS */
  13.    $arquivoZipado = $zip->compress("/conteudo/tmp/");
  14.    $this->view->arquivoZipado = $arquivoZipado;
  15. }


Basicamente o que fazemos ai é, criar o objeto $zip da Zend_Filter_Compress_Zip definir o arquivo zip que será gerado, definir o destino e passar o arquivo ou o diretorio a ser comprimido(Todos os arquivos dentro do diretório serão comprimidos).
 Depois é só mandar para download.



Simples não é? Veja que fiz esse artigo essencialmente para deixar claro que se vc utiliza o Zend Framework é bom que aproveite tudo que ele tem e não apenas a estrutura básica.


É ISSO AI, ATÉ A PRÓXIMA!




2 comentários:

  1. Cara artigo fudido o seu bem simples e claro. Zend Framework é super poderoso para programadores que sabem olhar a coisa de forma séria. Uma dúvida tem como eu compactar um arquivo unico e não um diretorio? HOW?

    ResponderExcluir
  2. Show de bola resolveu meu problema de ficar usando classes internas crua do PHP

    ResponderExcluir