ldsbh 0 Denunciar post Postado Setembro 1, 2004 Galera,Vou pedir a ajuda de vocês...Já peguei um monte de scripts para zipar arquivos, mas não estou conseguindo...Alguém teria um funcionando redondo??? (se isso é possível... :P )Mas sei como é difícil a vida de um programador...O cliente quer e quer na hora...Assim a nossa vida....Conto com a ajuda dos amigos... Compartilhar este post Link para o post Compartilhar em outros sites
nolfolk 0 Denunciar post Postado Setembro 1, 2004 num entendi, você ker zipar em PHP ??? o.O Compartilhar este post Link para o post Compartilhar em outros sites
ldsbh 0 Denunciar post Postado Setembro 1, 2004 num entendi, você ker zipar em PHP ??? o.O Sim...Quero que o próprio PHP comprima o arquivo desejado na hora do download...O próprio PHP gerando o ZIP... :D Compartilhar este post Link para o post Compartilhar em outros sites
decode 0 Denunciar post Postado Setembro 1, 2004 system("zip -q /var/www/html/arquivos.zip arquivo1.php,arquivo2.php,arquivo3.php" , $retval);se for para pegar todos os arquivos do diretório é soh dale ao inves do nome dos arquivos dale um * Compartilhar este post Link para o post Compartilhar em outros sites
MrEd 0 Denunciar post Postado Setembro 1, 2004 Da uma lida q vai te ajudar aqui q vai te ajudar. Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Setembro 1, 2004 n esqueca de instalar a livraria para poder zipar, cnaum n vai nunca Compartilhar este post Link para o post Compartilhar em outros sites
ldsbh 0 Denunciar post Postado Setembro 1, 2004 Peguei este exemplo...Zipou os arquivos....Quando abre não dá erro:Mas acho que não está legal...Neste exemplo ele pega duas imagens e zipa...Mas quando você abre a imagem depois ela está vazia...O que pode ser? <?php// Class definition found at http://www.zend.com/zend/spotlight/creating-zip-files3.php// Some alterations to the original posted code were made in order to get everything working properly// See example usage at the bottom of this pageclass zipfile{ var $datasec = array(); var $ctrl_dir = array(); var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; var $old_offset = 0; function add_dir($name) { $name = str_replace("\\", "/", $name); $fr = "\x50\x4b\x03\x04"; $fr .= "\x0a\x00"; $fr .= "\x00\x00"; $fr .= "\x00\x00"; $fr .= "\x00\x00\x00\x00"; $fr .= pack("V",0); $fr .= pack("V",0); $fr .= pack("V",0); $fr .= pack("v", strlen($name) ); $fr .= pack("v", 0 ); $fr .= $name; $fr .= pack("V", 0); $fr .= pack("V", 0); $fr .= pack("V", 0); $this -> datasec[] = $fr; $new_offset = strlen(implode("", $this->datasec)); $cdrec = "\x50\x4b\x01\x02"; $cdrec .="\x00\x00"; $cdrec .="\x0a\x00"; $cdrec .="\x00\x00"; $cdrec .="\x00\x00"; $cdrec .="\x00\x00\x00\x00"; $cdrec .= pack("V",0); $cdrec .= pack("V",0); $cdrec .= pack("V",0); $cdrec .= pack("v", strlen($name) ); $cdrec .= pack("v", 0 ); $cdrec .= pack("v", 0 ); $cdrec .= pack("v", 0 ); $cdrec .= pack("v", 0 ); $ext = "\x00\x00\x10\x00"; $ext = "\xff\xff\xff\xff"; $cdrec .= pack("V", 16 ); $cdrec .= pack("V", $this -> old_offset ); $cdrec .= $name; $this -> ctrl_dir[] = $cdrec; $this -> old_offset = $new_offset; return; } function add_file($data, $name) { $fp = fopen($data,"r"); $data = fread($fp,filesize($data)); fclose($fp); $name = str_replace("\\", "/", $name); $unc_len = strlen($data); $crc = crc32($data); $zdata = gzcompress($data); $zdata = substr ($zdata, 2, -4); $c_len = strlen($zdata); $fr = "\x50\x4b\x03\x04"; $fr .= "\x14\x00"; $fr .= "\x00\x00"; $fr .= "\x08\x00"; $fr .= "\x00\x00\x00\x00"; $fr .= pack("V",$crc); $fr .= pack("V",$c_len); $fr .= pack("V",$unc_len); $fr .= pack("v", strlen($name) ); $fr .= pack("v", 0 ); $fr .= $name; $fr .= $zdata; $fr .= pack("V",$crc); $fr .= pack("V",$c_len); $fr .= pack("V",$unc_len); $this -> datasec[] = $fr; $new_offset = strlen(implode("", $this->datasec)); $cdrec = "\x50\x4b\x01\x02"; $cdrec .="\x00\x00"; $cdrec .="\x14\x00"; $cdrec .="\x00\x00"; $cdrec .="\x08\x00"; $cdrec .="\x00\x00\x00\x00"; $cdrec .= pack("V",$crc); $cdrec .= pack("V",$c_len); $cdrec .= pack("V",$unc_len); $cdrec .= pack("v", strlen($name) ); $cdrec .= pack("v", 0 ); $cdrec .= pack("v", 0 ); $cdrec .= pack("v", 0 ); $cdrec .= pack("v", 0 ); $cdrec .= pack("V", 32 ); $cdrec .= pack("V", $this -> old_offset ); $this -> old_offset = $new_offset; $cdrec .= $name; $this -> ctrl_dir[] = $cdrec; } function file() { $data = implode("", $this -> datasec); $ctrldir = implode("", $this -> ctrl_dir); return $data . $ctrldir . $this -> eof_ctrl_dir . pack("v", sizeof($this -> ctrl_dir)) . pack("v", sizeof($this -> ctrl_dir)) . pack("V", strlen($ctrldir)) . pack("V", strlen($data)) . "\x00\x00"; }}// Test this class$zipTest = new zipfile();$zipTest->add_dir("images/");$zipTest->add_file("images/box1.jpg", "images/box1.jpg");$zipTest->add_file("images/box2.jpg", "images/box2.jpg");// Return Zip File to BrowserHeader("Content-type: application/octet-stream");Header ("Content-disposition: attachment; filename=zipTest.zip");echo $zipTest->file(); // Alternatively, you can write the file to the file system and provide a link: /* $filename = "output.zip"; $fd = fopen ($filename, "wb"); $out = fwrite ($fd, $zipTest -> file()); fclose ($fd); echo "<a href=\"output.zip\">Click here to download the new zip file.</a>"; */?>Eu testi com um TXT...Ele zipa beleza, mas o texto depois fica todo esquisito (sem quebra de linha)antesCooler Cyber Cooler para HD - HC-350 15,00 Cooler Cyber Cooler Slot - Exaustao -SC180 15,00 RCT 250,00 = 25,00depoisQuando eu colei aqui voltou ao normal...Mas são uns quadrados que ficam no lugar da quebra de linhaO que está havendo??? Compartilhar este post Link para o post Compartilhar em outros sites
ldsbh 0 Denunciar post Postado Setembro 2, 2004 UP http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Setembro 2, 2004 Peguei essa classe a um tempo no phpclasses.org, usei várias vezes e sempre funcionou, pra quem quiser: PHP [/tr][tr]<?phpclass PHPZip { function Zip($dir, $zipfilename) { if (@function_exists('gzcompress')) { $curdir = getcwd(); if (is_array($dir)) { $filelist = $dir; } else { $filelist = $this -> GetFileList($dir); } if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir); else chdir($curdir); if (count($filelist)>0) { foreach($filelist as $filename) { if (is_file($filename)) { $fd = fopen ($filename, "r"); $content = fread ($fd, filesize ($filename)); fclose ($fd); if (is_array($dir)) $filename = basename($filename); $this -> addFile($content, $filename); } } $out = $this -> file(); chdir($curdir); $fp = fopen($zipfilename, "w"); fwrite($fp, $out, strlen($out)); fclose($fp); } return 1; } else return 0; } function GetFileList($dir) { if (file_exists($dir)) { $args = func_get_args(); $pref = $args[1]; $dh = opendir($dir); while($files = readdir($dh)) { if (($files!=".")&&($files!="..")) { if (is_dir($dir.$files)) { $curdir = getcwd(); chdir($dir.$files); $file = array_merge($file, $this -> GetFileList("", "$pref$files/")); chdir($curdir); } else $file[]=$pref.$files; } } closedir($dh); } return $file; } var $datasec = array(); var $ctrl_dir = array(); var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; var $old_offset = 0; function unix2DosTime($unixtime = 0) { $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if ($timearray['year'] < 1980) { $timearray['year'] = 1980; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); } function addFile($data, $name, $time = 0) { $name = str_replace('\a34f59274d50f313ec06e96e2620e117, '/', $name); $dtime = dechex($this->unix2DosTime($time)); $hexdtime = '\x' . $dtime[6] . $dtime[7] . '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[0] . $dtime[1]; eval(' $hexdtime = "' . $hexdtime . '";'); $fr = "\x50\x4b\x03\x04"; $fr .= "\x14\x00"; $fr .= "\x00\x00"; $fr .= "\x08\x00"; $fr .= $hexdtime; $unc_len = strlen($data); $crc = crc32($data); $zdata = gzcompress($data); $c_len = strlen($zdata); $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); $fr .= pack('V', $crc); $fr .= pack('V', $c_len); $fr .= pack('V', $unc_len); $fr .= pack('v', strlen($name)); $fr .= pack('v', 0); $fr .= $name; $fr .= $zdata; $fr .= pack('V', $crc); $fr .= pack('V', $c_len); $fr .= pack('V', $unc_len); $this -> datasec[] = $fr; $new_offset = strlen(implode(' ', $this->datasec)); $cdrec = "\x50\x4b\x01\x02"; $cdrec .= "\x00\x00"; $cdrec .= "\x14\x00"; $cdrec .= "\x00\x00"; $cdrec .= "\x08\x00"; $cdrec .= $hexdtime; $cdrec .= pack('V', $crc); $cdrec .= pack('V', $c_len); $cdrec .= pack('V', $unc_len); $cdrec .= pack('v', strlen($name) ); $cdrec .= pack('v', 0 ); $cdrec .= pack('v', 0 ); $cdrec .= pack('v', 0 ); $cdrec .= pack('v', 0 ); $cdrec .= pack('V', 32 ); $cdrec .= pack('V', $this -> old_offset ); $this -> old_offset = $new_offset; $cdrec .= $name; $this -> ctrl_dir[] = $cdrec; } function file() { $data = implode(' ', $this -> datasec); $ctrldir = implode(' ', $this -> ctrl_dir); return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', sizeof($this -> ctrl_dir)) . pack('v', sizeof($this -> ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00"; } } ?>[/tr] Pra usar, faz assim: PHP [/tr][tr]$s = new PHPZip();$files = array("imagem1.jpg","imagem2.jpg"); $s->Zip($file,"file.zip");[/tr] No array files você vai colocando os nomes dos arquivos, se for só um, nem precisa ser um array, é só colocar $files = "imagem1.jpg"; ;) Compartilhar este post Link para o post Compartilhar em outros sites
ldsbh 0 Denunciar post Postado Setembro 2, 2004 Deu esse erro aqui... Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\arquivos de programas\easyphp\www\zip2.php on line 72Parse error: parse error, unexpected T_STRING in c:\arquivos de programas\easyphp\www\zip2.php on line 72 Compartilhar este post Link para o post Compartilhar em outros sites
ldsbh 0 Denunciar post Postado Setembro 2, 2004 Esse aqui deu erro também!eval('$hexdtime = "' . $hexdtime . '";');Parse error: parse error, unexpected T_VARIABLE in c:\arquivos de programas\easyphp\www\zip2.php on line 76 Compartilhar este post Link para o post Compartilhar em outros sites
ldsbh 0 Denunciar post Postado Setembro 3, 2004 UP :o Galera da uma força ai! :unsure: Compartilhar este post Link para o post Compartilhar em outros sites