domingo, 2 de dezembro de 2012

PHP: Manipulação de Arquivo ZIP

Hoje vamos aprender a manipular arquivos ZIP, compactando ou descompactando arquivos em tempo de execução.

1. Abrindo/Criando um arquivo ZIP
Para começar a utilizar o arquivo ZIP vamos instanciar um objeto ZipArchive:

$zip = new ZipArchive();

Aqui instanciamos um objeto ZipArchive na variável $zip. Agora nós vamos abrir o arquivo, semelhante o que fizemos no artigo Manipulação de Arquivos:



$res = $zip->open($diretorioDoArquivo);

Esse comando serve para abrir um arquivo já existente no arquivo. Caso não exista irá dar erro. Se quero criar um arquivo na hora, uso o seguinte comando:

$res = $zip->open($diretorioDoArquivo, ZipArchive::CREATE);

Esse arquivo vai criar um novo arquivo zip vazio no diretório indicado.
A variável $res serve para ver se o arquivo foi aberto/criado com sucesso, então vale a pena fazer uma verificação e tratamento de erro.

2. Fechando o arquivo:
Assim como na manipulação de arquivo, temos que fechar o arquivo depois de manipular. Aqui é simples:

$zip->close();

3. Adicionando Arquivos no Arquivo Zip
Existem algumas formas de adicionar arquivos dentro de um arquivo zip. Vamos ver alguns que podem ser úteis:  

$zip ->addFile($caminhoDoArquivo);

Aqui é um comando simples para adicionar um arquivo que já existe no servidor, localizado no diretório indicado no $caminhoDoArquivo. O Arquivo será colocado na raiz do arquivo. Caso queira adicionar o arquivo numa pasta interna do arquivo Zip, posso adicionar um segundo parâmetro:

$zip ->addFile($caminhoDoArquivo,$caminhoInterno);

Nesse caso, se tiver o parâmetro $caminhoInterno como "pasta2/nomeArquivo.txt", o arquivo vai ser inserido na pasta2 dentro do arquivo ZIP (caso não exista, será criado). Se o nome do arquivo indicado no $caminhoInterno for diferente do nome original do arquivo, o arquivo será renomeado.

Caso queira criar um arquivo direto, sem um arquivo base para adicionar, você pode criar um arquivo dentro a partir de uma String:

$zip -> addFromString($caminhoInterno,$conteudo);

O $caminhoInterno é a mesma explicação do addFile(), já o $conteudo é uma string que vai ter o conteúdo do arquivo que vai ser adicionado.

4. Extrair os Arquivos de um Arquivo ZIP
Para extrair os arquivos, utiliza o seguinte comando:

$zip -> extractTo($dirDestino);

Esse comando irá extrair todos os arquivos para $dirDestino do servidor. Se você quer extrair arquivos específicos, você irá criar um vetor com os nomes como segundo parâmetro:

$zip -> extractTo($dirDestino, array("nomeArq1.ext", ..., "nomeArqN.ext");

Nesse comando, ele vai extrair os arquivos "nomeArq1.ext", "nomeArqN.ext" e qualquer outro que esteja listado na parte "..."

Basicamente é isso pessoal. Até a próxima.

Nenhum comentário:

Postar um comentário