stArquivoTmp = $valor ; } public function setNomeArquivo($valor) { $this->stNomeArquivo = $valor ; } public function setNomeArquivoTmp($valor) { $this->stNomeArquivoTmp = $valor ; } //GETANDO public function getArquivoTmp() { return $this->stArquivoTmp ; } public function getNomeArquivo() { return $this->stNomeArquivo ; } public function getNomeArquivoTmp() { return $this->stNomeArquivoTmp ; } /** * Função Construtura */ public function ArquivoZip() { } /** * Adiciona Arquivo * @return void() * @desc Adiciona arquivo na compressao corrente. */ public function AdicionarArquivo($obArquivo,$stNome,$stDir='',$inTime=0,$adicionaCaminho=true) { // Se stDir estiver setado if (!$stDir=='') { // Se nao tiver / no fim da string, coloca if (!substr($stDir,-1,1)=='/' ) {$stDir = $stDir.'/';} } //teste de zipar arquivo com caminho completo ou não -> não estava funcionando zipar arquivos comuns if ($adicionaCaminho == true) { $stNomeDisco = $stDir.$stNome; } else { $stNomeDisco = $stNome; } // Le arquivo passado $abre = fopen($obArquivo, "r"); // error_reporting(E_ERROR); $filesize = filesize($obArquivo); /* se tamanho do arquivo for 0 ou menor, o arquivo esta vazio, para nao dar pau no zip, cria-se um arquivo com 1 byte */ if ($filesize > 0) { $obArquivo = fread($abre, filesize($obArquivo)); //string contendo o arquivo a ser compactado } else { $obArquivo = ''; } fclose($abre); // error_reporting(E_ALL | E_NOTICE); // Adiciona no arquivo zip parent::addFile($obArquivo,$stNomeDisco,$inTime); } public function FinalizaZip() { $stArquivo = parent::file(); if ($this->getNomeArquivoTmp() == "") { $this->setNomeArquivoTmp(sistemalegado::getmicrotime()."_exportacao.zip"); } //$stArq= CAM_ANEXOS."exportador/".$this->getNomeArquivoTmp(); $stArq= CAM_FRAMEWORK."tmp/".$this->getNomeArquivoTmp(); // seta o nome ficticio para download, caso o usuario set , sera sobreposto depois $this->setNomeArquivo($this->getNomeArquivoTmp()); $abre = fopen($stArq, "w"); $salva = fwrite($abre, $stArquivo); fclose($abre); $this->setArquivoTmp($stArq); return 0;//$stArq; } /** * @return void() * @desc Finaliza Automagicamente o arquivo zip corrente * e força o download. */ public function Show() { // Grava Finalizador do Arquivo $this->FinalizaZip(); $len = filesize($this->getArquivoTmp()); $filename = basename($this->getArquivoTmp()); if (!headers_sent()) { header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Type: application/zip"); //Força o download $header="Content-Disposition: attachment; filename=".$this->getNomeArquivo().";"; header($header ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$len); @readfile($this->getArquivoTmp()); } return $this->getNomeArquivo(); } } ?>