我似乎成功创建了一个即时zip存档(filesize和file_exists都返回了预期的值)但是当我尝试实际下载它时,我收到一个空的ZIP文件。 奇怪的是,readfile和fread都会发生这种错误。这是我的代码
$filename = $zip;
$handle = fopen($filename, 'r');
if ($handle === false)
{
die('Could not read file "' . $filename . '"');
}
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="fsdownload.zip"');
header('Cache-Control: private');
while (!feof($handle))
{
echo fread($handle, 8192);
}
fclose($handle);
这适用于zip-Files< 10 MB对问题可能是什么的任何想法?
答案 0 :(得分:1)
为了避免消耗太多内存,您可以使用ZipStream或PHPZip,它会动态地将压缩文件发送到浏览器,分成块,而不是用PHP加载整个内容然后发送zip文件。
这两个库都是很好且有用的代码片段。一些细节:
相关的SO问题:
答案 1 :(得分:0)
问题是PHP限制。检查内存和执行时间限制。