PHP: распаковка сжатого файла с помощью gzuncompress и fopen
Я пытаюсь распаковать двоичный файл, а затем распаковать его, чтобы проверить, работает ли сжатие. Однако "несжатый" файл содержит те же данные, что и "сжатый" файл. Как будто распаковка никогда не случалась. Я перечислил код ниже. заранее спасибо:
//compressing
//read file
$filename = 'tocompress/tocompress'.$number_input.'.bin';
$contents=fread($fp,filesize($filename));
fclose($fp);
//compress file
$compressing = gzcompress($contents , '0');
//write to file
$fp = fopen('compressed/compressed'.$number_input.'.bin', 'wb');
fwrite($fp, $compressing);
fclose($fp);
//uncompressing
//read file
$uncompfilename='compressed/compressed'.$number_input.'.bin';
$fp=fopen($uncompfilename,'rb');
$uncompresscontents=fread($fp,filesize($uncompfilename));
fclose($fp);
//uncompress file
$uncompressing = gzuncompress($uncompresscontents);
//write to file
$fp = fopen('uncompressed/uncompressed'.$number_input.'.bin', 'wb');
fwrite($fp, $uncompresscontents);
fclose($fp);
1 ответ
Решение
gzcompress
принимает необязательный второй аргумент, который устанавливает уровень сжатия, от 0 до 9. Вы устанавливаете его в 0 (без сжатия), и вы должны использовать int, а не строку:
У тебя есть gzcompress($contents, '0');
Ты хочешь gzcompress($contents, 9);
Уровень сжатия. Может быть задано как 0 для без сжатия до 9 для максимального сжатия.