2011-03-02 114 views
0
$files = array("images/1.jpg", "images/2.jpg", "images/3.jpg"); 
foreach($files as $file){ 
    $temp = null; 
    $fp_in = fopen($file,'rb'); 
    while(!feof($fp_in)){ 
     $temp .= fread($fp_in,1024); 
    } 
    $output[$file] = $temp; 
    fclose($fp_in); 
} 

$output = implode('"',$output); 

$zp = gzopen('sequences/backup.gz', "w9"); 
gzwrite($zp, $output); 
gzclose($zp); 

上面的代码工作,但只有一个文件被添加到存档。使用zLib将多个文件添加到存档的最佳方式是什么?PHP使用zLib压缩多个文件

+1

gz只是一种压缩技术,而不是归档技术。这就是为什么在unix上看到'.tar.gz'文件的原因。 '.tar'用于所有文件的联合,'.gz'用于压缩存档。 – 2011-03-02 01:53:34

+0

那么正确的过程是压缩它们,然后统一它们?有没有一种方法可以使用zLib和PHP来实现这一点? – 2011-03-02 02:01:22

回答

0
require 'Tar.php'; 
$tar_object = new Archive_Tar("tarname.tar"); 
$tar_object->setErrorHandling(PEAR_ERROR_PRINT); // Optional error handling 
$v_list = array("images/1.jpg", "images/2.jpg", "images/3.jpg"); 
$tar_object->createModify($v_list, "install"); 
    function compress($srcFileName, $dstFileName){ 
    // getting file content 
    $fp = fopen($srcFileName, "r"); 
    $data = fread ($fp, filesize($srcFileName)); 
    fclose($fp); 
    // writing compressed file 
    $zp = gzopen($dstFileName, "w9"); 
    gzwrite($zp, $data); 
    gzclose($zp); 
    echo 'success'; 
} 
compress("tarname.tar","tarname.tar.gz"); 
unlink('tarname.tar'); 

这是更新后的代码,在Tim的帮助下,谢谢!