如果我打开zip文件,winrar说:“存档意外结束” 如果没有ob_start,则zip创建可以正常工作,但不能下载。死();不起作用
<?php
$images = glob("bilder/*.*");
ob_start();
for ($i=0; $i <count($images) ; $i++) {
echo '<ul id="table"><li><a class="fancybox" rel="gallery1" href="'. $images[$i]. '"><img src="'. $images[$i].'" height="90" width="160" alt=""/></a>
<div><label><input id="check" type="checkbox" name="img[]" value="'.$images[$i].'"/></label></div></li></ul>';
}
if (isset($_POST["img"])){
$images = $_POST["img"];
$zip = new ZipArchive();
$ip = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$filename = "./".$ip.".zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
for ($i=0; $i < count($images); $i++) {
$zip->addFile($images[$i]);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$filename);
header('Content-Length: ' . filesize($filename));
readfile($filename);
die();
}
ob_end_flush();
?>
<input type="submit" value="Download">
</form>
答案 0 :(得分:0)
在readfile之后添加die()
,然后重试。没有死,你仍然打印html,这将破坏你的输出。