似乎我成功地创建了一个动态压缩文件(filesize和file_exists都返回了预期值),但是当我尝试实际下载它时,我收到了一个空的压缩文件。奇怪的是,这个错误在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);这对于小于10MB的zip-Files很好地工作。有没有想过问题可能是什么?
发布于 2011-12-12 20:57:14
为了避免消耗太多内存,您可以使用或,它们会将压缩文件分成块动态发送到浏览器,而不是在PHP中加载整个内容,然后发送压缩文件。
这两个库都是很好的、有用的代码。以下是一些细节:
相关SO问题:
发布于 2011-12-12 20:01:41
问题在于PHP的限制。检查内存和执行时间限制。
https://stackoverflow.com/questions/8473948
复制相似问题