2012-03-01 84 views
0

我根據this site壓縮文件:gzip是否總是需要擴展名?

$file_to_compress = $dest; 
//$gz_file_to_produce = $dest . ".gz"; 
$gz_file_to_produce = substr($dest, 0, -3) . ".gz"; 

$data = implode("", file($file_to_compress)); 
$gzdata = gzencode($data, 9); 
$fp = fopen($gz_file_to_produce, "w"); 
fwrite($fp, $gzdata); 
fclose($fp); 

如果我使用$gz_file_to_produce = $dest . ".gz";我得到一個filename.db.gz文件與它filename.db

如果我使用$gz_file_to_produce = substr($dest, 0, -3) . ".gz";,我得到一個filename.gz文件。但如果我打開它的文件filename沒有擴展名(缺少.db)。

gzip是否總是需要擴展名?

回答

1

是的,除非您的編碼器寫入FNAME標頭,而不是gzencode()

解包時,如果FNAME標頭不存在,默認情況下,解包應用程序會從源文件中減去.gz擴展名來命名目標文件,結果在此情況下爲filename

+0

如何編寫FNAME標頭?這是可能的PHP或我需要一個特殊的圖書館? – testing 2012-03-01 09:25:17

+1

@testing ['gzencode()'](http://php.net/manual/en/function.gzencode.php)沒有文件名參數,但也許另一個庫有它。但是,爲什麼你會與使用' .gz'的事實標準不同呢? – CodeCaster 2012-03-01 09:50:02

+0

我得到了一個規範,我必須完成它。但我認爲規範必須改變......但是,知道是否有另一個圖書館是很好的。 – testing 2012-03-01 10:13:06

相關問題