我今天发现了一些奇怪的东西,同时制作了一个下载zip文件的脚本。
这是脚本,它在目录中获取文件,并将其呈现给客户端进行下载:
<?php
$directory='/dir';
$d = scandir($directory);
$zip = new ZipArchive();
$zipname = 'dir' . time() . 'zip';
if($zip->open($zipname, ZIPARCHIVE::CREATE)===true){
foreach($d as $f){
if($f!='.'&&$f!='..'){
$zip->addFile($directory.'/'.$f, $f);
}
}
} else {
echo 'Error';
}
$zip->close();
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zipname.'"');
readfile($zipname);
unlink($zipname);
?>
实际上,它有效。但是,如果我在顶部(<?php
之前)添加一个新的空行,它仍然有效,但下载的文件已损坏。奇怪吧。
我有点想到这可能是已发送的标题&#39;错误,但日志中没有错误...
有人能说清楚为什么会这样吗?它是服务器端故障还是客户端故障?谢谢你提前。
此脚本是对http://wcetdesigns.com/tutorials/2012/11/01/zip-archive.html
的修改