2012-03-01 2 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

+1

@testing ['gzencode()'] (http://php.net/manual/en/function.gzencode.php) не имеет параметра имени файла, но, возможно, в его другой библиотеке. Но почему вы отличаетесь от фактического стандарта использования '. .gz'? – CodeCaster

+0

У меня есть спецификация, и я должен ее выполнить. Но я думаю, что спецификация должна быть изменена ... Тем не менее, было бы хорошо знать, есть ли там другая библиотека. – testing

Смежные вопросы