2011-03-02 113 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的幫助下,謝謝!