Ir para conteúdo

POWERED BY:

Arquivado

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

RafaelCK

[Resolvido] Como gerar arquivo zip?

Recommended Posts

olá, galera tem como me explicar, se não for pedir muito de como fazer para criar arquivos zip por exemplo:

<?php // Criando o objeto
$z = new ZipArchive();

// Criando o pacote chamado "teste.zip"
$criou = $z->open('teste.zip', ZipArchive::CREATE);
if ($criou === true) {

   // Criando um diretorio chamado "teste" dentro do pacote
   $z->addEmptyDir('teste');

   // Criando um TXT dentro do diretorio "teste" a partir do valor de uma string
   $z->addFromString('teste/texto.txt', 'Conteúdo do arquivo de Texto');

   // Criando outro TXT dentro do diretorio "teste"
   $z->addFromString('teste/outro.txt', 'Outro arquivo');

   // Copiando um arquivo do HD para o diretorio "teste" do pacote
   $z->addFile('teste.php', 'teste/teste.php');

   // Apagando o segundo TXT
   $z->deleteName('teste/outro.txt');

   // Salvando o arquivo
   $z->close();
} else {
   echo 'Erro: '.$criou;
}
?>

mas eu queria que não salvasse no servidor e somente mandava o download do arquivo zip para o cliente ou até mesmo poderia salvar mas que depois de 30 minutos ou 1 horas ele se apagasse

 

 

PS:Este código foi disponibilizado por Rubens Ribeiro e pode ser encontrado aqui http://rubsphp.blogspot.com.br/2011/03/manipulando-arquivos-zip-pelo-php.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples, depois que você fechou o zip lá no $zip->close, use a função readfile do PHP para ler o arquivo, em seguida mande-o para download:

 

 

<?php
ob_start();

// Criando o objeto
$z = new ZipArchive();

// Criando o pacote chamado "teste.zip"
$criou = $z->open('teste.zip', ZipArchive::CREATE);
if ($criou === true) {

   // Criando um diretorio chamado "teste" dentro do pacote
   $z->addEmptyDir('teste');

   // Criando um TXT dentro do diretorio "teste" a partir do valor de uma string
   $z->addFromString('teste/texto.txt', 'Conteúdo do arquivo de Texto');

   // Criando outro TXT dentro do diretorio "teste"
   $z->addFromString('teste/outro.txt', 'Outro arquivo');

   // Copiando um arquivo do HD para o diretorio "teste" do pacote
   $z->addFile('teste.php', 'teste/teste.php');

   // Apagando o segundo TXT
   $z->deleteName('teste/outro.txt');

   // Salvando o arquivo
   $z->close();


//SETANDO OS HEADERS NECESSARIOS
header("Content-length: " . filesize( "teste.zip" ) );
header("Content-type: application/octet-stream"); 
header("Content-disposition: attachment; filename=test.zip");

//ABRINDO O ARQUIVO 
readfile( "teste.zip" );
} else {
   echo 'Erro: '.$criou;
}
?>

 

Eu adicionei o ob_start(); no começo para segurar o buffer de saída até eu enviar os headers do download. Se quiser, apague o arquivo após o ReadFile com a função Unlink

 

 

 

 

 

 

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.