我有一个脚本,可以从某个目录中的文件创建一个zip文件。下载后,对于很多用户来说 - zip文件是空的。但是,对于其他用户 - 该文件不为空。这是我做错的事吗?
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$id.'.zip"');
header('Cache-Control: private');
ob_clean();
flush();
readfile("".$id.".zip");
exit;
答案 0 :(得分:1)
最好添加一些错误控制:
$file = "{$id}.zip";
if (!is_readable($file))
{
die('Not accessible.');
}
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: private');
ob_clean();
flush();
readfile($file);
exit;
此外,还要检查输出缓冲配置与readfile
的对比情况。
答案 1 :(得分:0)
我之前建议这是一个建议,这里是我所说的骨架。这是未经测试的,因为我目前无法访问php。
$filename = $id . '.zip';
$handle = fopen($filename, 'r');
if ($handle === false)
{
die('Could not read file "' . $filename . '"');
}
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Cache-Control: private');
while (!feof($handle))
{
echo fread($handle, 8192);
}
fclose($handle);
exit;