Esta semana me deparei com uma ocasião interessante no trabalho: o cliente precisava importar para o servidor estruturas inteiras de arquivos (inclusive com diretórios), muito parecida com pequenos hotsites.
A opção que tivemos foi permitir que o usuário efetuasse o upload de um arquivo zip com toda a estrutura compactada e assim, de acordo com os dados inseridos no formulário, hospedaríamos essa estrutura em determinado local no servidor.
Para muitos que ainda não se depararam com esta tarefa, parece muito mais difícil do que de fato é.
A boa notícia é que o PHP oferece métodos nativos para executar a extração de arquivos zip. Com apenas quatro linhas de código é possível efetuar a extração.
Caso você não saiba como efetuar upload de arquivos, sugiro que dê uma passadinha rápida neste artigo.
Vamos ao que interessa:
<?php $zip = new ZipArchive(); $zip->open($_FILES['file']['tmp_name']); $zip->extractTo('resource'); $zip->close();
Basicamente este procedimento:
Na linha 2, inicia o objeto ZipArchive.
Na linha 3, efetua a leitura do arquivo ZIP que foi enviado ao servidor pelo usuário. É possível efetuar a extração de qualquer arquivo já existente no servidor; basta informar para este método o caminho + nome do arquivo (com extensão);
Na linha 4, efetua a extração do arquivo ZIP para o diretório informado. Neste caso estamos extraindo para o diretório resource que encontra-se no mesmo local do aquivo que está processando a extração. Caso o diretório não exista, será criado automaticamente;
Na linha 5, finaliza o procedimento;
Simples assim!