2012-03-01 18 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.dbfilename.db.gzファイルを取得します。

$gz_file_to_produce = substr($dest, 0, -3) . ".gz";を使用すると、filename.gzというファイルが表示されます。しかし、私がそれを開いた場合、ファイルfilenameには拡張子がありません(.dbがありません)。

gzipには常に拡張子が必要ですか?

答えて

1

はい、エンコーダがFNAMEヘッダーを書き出していない場合は、gzencode()には該当しません。

FNAMEヘッダが存在しない場合この場合には裸filename、その結果、先のファイルに名前を付けるために、デフォルトのsubtracsによって、ソースファイルから.gz拡張子をアンパックアプリケーションをアンパック。

+0

FNAMEヘッダーはどのように記述できますか?それはPHPで可能ですか、特別なライブラリが必要ですか? – testing

+1

@testing ['gzencode()'](http://php.net/manual/en/function.gzencode.php)にはファイル名パラメータはありませんが、おそらく別のライブラリにはそれがあります。しかし、なぜあなたは ' .gz'を使うという事実上の標準と違うでしょうか? – CodeCaster

+0

私は仕様を持っており、それを実現しなければなりません。しかし、私は仕様を変更しなければならないと考えています...それにもかかわらず、そこに別のライブラリがあるかどうかを知ることは良いでしょう。 – testing

関連する問題