Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jefferson Saavedra

Compactar Pasta com php

Recommended Posts

require("funcao_zip.lib.php");

$zipfile = new zipfile('arq.zip'); // arquivo
$zipfile->addDirContent('./'); // caminho

$strzip = $zipfile->file();

$arq= "arq.zip"; // arquivo

$abre = fopen($arq, "w");
$salva = fwrite($abre, $strzip);
fclose($abre);

Zipar arquivo PHP, do PHP!

Zip Archive

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara nunca fiz isto...

mas de uma espiada na documentação do php:

 

http://www.php.net/manual/en/book.zip.php

http://www.php.net/manual/en/function.ziparchive-addfile.php

 

Não parece ser muito dificil, mas tb como te disse nunca usei.

 

Mas acho que o que você precisa é do primeiro exemplo do segundo link.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado aos que responderam. Vou testar as soluções que foram postadas aqui e se der certo posto a solução completa porque percebi que não tem muita coisa consistente na net sobre isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal já estou a dias tentando resolver esse pepino e ainda não consegui. Segui no seguinte código e não deu certo.

<?php
$data = date("Ymd");
$hora = date("His");
$pasta = $data.$hora;
mkdir ("./$pasta", 0700 );

require("zipphp/zip.lib.php");

$zipfile = new zipfile($pasta.'.zip'); // arquivo
$zipfile->addDirContent('./'.$pasta); // caminho

$strzip = $zipfile->file();

$arq= $pasta.".zip"; // arquivo

$abre = fopen($arq, "w");
$salva = fwrite($abre, $strzip);
fclose($abre);
?>
quando ele é executado ele gera um arquivo compactado sem nada dentro e simultaneamente ele faz download de outro arquivo com o mesmo nome mas corrompido. Alguem me ajude por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá amigo obrigado pela resposta. O que acontece é que no meu php5 não consigo instalar a classe ziparchive já ativei no meu php.ini e nada dá o erro Fatal error: Class 'ZipArchive' not found in C:\Arquivos de programas\VertrigoServ\www\boletim\exportar\teste17.php on line 37

O que eu faço já nem sei mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites
A solução é funcional, mas é possível melhorar (e muito), o resultado obtido pelos estudos do próprio autor do tópico, na última resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa pessoal não deu certo alguem me ajuda não consigo compactar uma pasta. Preciso muito disso.

 

 

Cara,

também procurei um momte por codigo para zipar diretorio todo, o pessoal na net gosta muito de copiar e colar codigo dos outros, mas no fundo é muito raro alguem que seja "bom mesmo" e ajude/CONSIGA resolver.

Segue código com base em um artigo que li, so nao me lembro onde foi....

 

PHP COMPACTAR DIRETORIO TODO:

 

<?php
$directory = 'fotos'; //diretorio para compactar
$zipfile = 'backup.zip'; // nome do zip gerado

$filenames = array();
function browse($dir) {
global $filenames;
   if ($handle = opendir($dir)) {
       while (false !== ($file = readdir($handle))) {
           if ($file != "." && $file != ".." && is_file($dir.'/'.$file)) {
               $filenames[] = $dir.'/'.$file;
           }
           else if ($file != "." && $file != ".." && is_dir($dir.'/'.$file)) {
               browse($dir.'/'.$file);
           }
       }
       closedir($handle);
   }
   return $filenames;
}

browse($directory);
// cria zip, adiciona arquivos...
$zip = new ZipArchive();
if ($zip->open($zipfile, ZIPARCHIVE::CREATE)!==TRUE) {
   exit("Não pode abrir: <$zipfile>\n");
}

foreach ($filenames as $filename) {
   echo "Arquivo adicionado: <b>" . $filename . "<br/></b>";
   $zip->addFile($filename,$filename);
}

echo "Total de arquivos: <b>" . $zip->numFiles . "</b>\n";
//echo "Status:" . $zip->status . "\n";
$zip->close();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, @nimurakenchin

 

Bem vindo ao Fórum e obrigado por compartilhar seu conhecimento conosco.

 

Continue colaborando em tópicos mais recentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando que o tópico foi ressucitado, vejam como é fácil:

 

$zip = new ZipArchive();

if ( $zip->open( 'arquivo.zip', ZipArchive::OVERWRITE ) ) {
   foreach( glob( './pasta/desejada/*.*' ) as $current )
       $zip->addFile( $current, basename( $current ) );

   $zip->close();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguns servidores compartilhados não habilitam a zipArchive pois segundo eles ela utiliza muita memória.

Encontrei a classe PCLZIP, muito boa.

 

PclZip

 

A documentação é ótima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.