我正在尝试创建,下载然后删除一个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并试了很多东西,但没有工作......有什么想法吗?
提前致谢!
答案 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);