如何使用PHP解压缩.gz文件?

2022-08-30 22:35:19

我正在使用CodeIgniter,我不知道如何解压缩文件!


答案 1

PHP本身具有许多处理gzip文件的功能。

如果你想创建一个新的,未压缩的文件,它将是这样的。

注意:此操作不会首先检查目标文件是否存在,不会删除输入文件,也不会执行任何错误检查。在生产代码中使用它之前,您确实应该修复这些问题。

// This input should be from somewhere else, hard-coded in this example
$file_name = 'file.txt.gz';

// Raising this value may increase performance
$buffer_size = 4096; // read 4kb at a time
$out_file_name = str_replace('.gz', '', $file_name);

// Open our files (in binary mode)
$file = gzopen($file_name, 'rb');
$out_file = fopen($out_file_name, 'wb');

// Keep repeating until the end of the input file
while(!gzeof($file)) {
    // Read buffer-size bytes
    // Both fwrite and gzread and binary-safe
    fwrite($out_file, gzread($file, $buffer_size));
}

// Files are done, close files
fclose($out_file);
gzclose($file);

注意:这处理gzip。它不处理焦油。


答案 2

gzopen是太多的工作。这更直观:

$zipped = file_get_contents("foo.gz");
$unzipped = gzdecode($zipped);

在http页面上工作,当服务器吐出gz压缩数据时也是如此。


推荐