2013-05-20 39 views
3

我想用PHP壓縮一個.txt文件,同時保持文件擴展名。當我解壓縮.gz文件時,.gz文件中的擴展名(.txt)被刪除。 (test.txt變 - >testPHP - 在保持文件擴展名的同時壓縮一個txt文件

這裏是我的PHP代碼,例如壓縮test.txt.gz文件:

<?php 

// Name of the file we are compressing 
$file = "test.txt"; 

// Name of the gz file we are creating 
$gzfile = "test.gz"; 

// Open the gz file (w9 is the highest compression) 
$fp = gzopen ($gzfile, 'w9'); 

// Compress the file 
gzwrite ($fp, file_get_contents($file)); 

// Close the gz file and we are done 
gzclose($fp); 

?> 

是否有人知道我做錯了嗎?或者是因爲gzip limations?

+0

gz不保存任何地方的擴展名。縮小時,gzip簡單地刪除.gz。 (這不是一個檔案,它只是一個文件的壓縮) – bwoebi

+0

如果我正確地看着這個,我不認爲你正在加載文件到.gz文件中......你正在加載文件內容進入gz文件。沒有'文件名'在這裏保存,有或沒有文件擴展名。你想建立一個tar檔案嗎?猜測... test.txt的內容是什麼?它可能是'測試'? –

+0

@bwoebi我不知道,是不是'.tar.gz'好的選擇? @WolfmanJoe'test.txt'的內容確實是'test'。我現在使用'.tar.gz' PHP壓縮器,但在某些服務器上不起作用,所以我認爲'.gz'是一個更好的選擇。 – user1480019

回答

4

正常情況下,gzip在解壓縮時不使用gzip頭中的名稱,而且您也沒有在頭中存儲名稱。它只是從文件名中刪除.gz。您需要命名文件test.txt.gz才能將其解壓到test.txt

+0

感謝您的回答!目錄在'.gz'格式壓縮時是否也不起作用? – user1480019

+0

當然不是。 gzip旨在壓縮單個文件或數據流。您需要使用'.tar.gz'或'.zip'等格式來存儲多個文件和目錄結構。 –

相關問題