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