标题 - 下载Gzip不是Gzip格式,在服务器上更正

时间:2016-09-19 15:37:06

标签: php download gzip

我正在尝试创建,下载然后删除一个gzip压缩文件。

在服务器上创建的文件是正确的。我可以使用直接链接下载它,并且文件在本地正确解压缩。

如果我使用header(),文件将不会解压缩并出现错误“Not In Gzip Format”。好像我必须使用header()才能取消链接()。

代码的要点是:

# This creates the gz file correctly..
$tar = 'meta-info.tar';
$gz = $tar.'.gz';
$p = new PharData($tar);
$p->compress(Phar::GZ)->buildFromDirectory('../');

# This creates the dialog then removes the file correctly..
header('Content-Type:'.mime_content_type($gz));
header('Content-Length:'.filesize($gz));
header("Content-Disposition:attachment;filename=$gz");
flush();
readfile($gz);
unlink($gz);

# ...but the downloaded file is not correct.

奇怪的是,'zip'文件正确下载和解压缩。

我看了遍遍stackoverflow并试了很多东西,但没有工作......有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

问题是标题信息已经发送。

使用ob_end_clean()修复它(页面结构无法更改)。

ob_end_clean();
header("Content-Disposition:attachment;filename=$gz");
header('Content-Type:application/x-gzip');
header('Content-Length:'.filesize($gz));
flush();
readfile($gz);
unlink($gz);