Para zipar um arquivo no servidor podemos utilizar está função abaixo:

function zipFiles($file_names, $archive_file_name, $file_path){

//cria objeto zip
$zip = new ZipArchive();
//Cria o Arquivo Zip
if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) {
   exit("cannot open \n");
}

//Adiciona arquivos no Arquivo Zip
foreach($file_names as $files){
   $zip->addFile($file_path.$files,$files);
}
//Fecha o Zip
$zip->close();

}

A definição dos parâmetros são:

$file_names : Nomes dos arquivos a serem zipados em um array. Por exemplo, array(‘file1.jpg’, ‘file2.php’, ‘file3.gif’);
$arquive_file_name : Nome do arquivo de saída. Por exemplo, zip_file.zip
$file_path : Diretório onde estão os arquivos de origem e onde será adicionado o arquivo zip.

Para criar o arquivo zip em um diretório diferente basta criar um novo parâmetro com o diretório de destino do zip.

Espero ter ajudado.

Compartilhe:

3 thoughts to “Zipar Arquivo com PHP

  • Arandir

    Valew pela dica, mas não querendo abusar…rs… poderia passar como descompactar?

    Responder
    • Rafael Theodoro

      Ola Arandir, para descompactar utilize o conceito abaixo:


      //cria objeto zip
      $zip = new ZipArchive();

      //abre o arquivo
      $file_name = "dir/file.zip";
      $zip->open($file_name);

      //Descompacta
      $zip->extractTo("name_dir");

      //Fecha o Zip
      $zip->close();

      Responder
  • Giovani

    O script não gera erro mas tambem não cria o arquivo zipado.. qual seria o problema? Usei uma array $archive_file_name=array(‘id.php’,’id2.php’);

    Responder

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *