开发者

PHP Zip File Empty?

开发者 https://www.devze.com 2023-03-28 03:07 出处:网络
I have a script that creates a zip files from files in a certain directory. After Download, for a lot of users - the zip file is empty. However, for other users - the file isn\'t empty. Is it somethin

I have a script that creates a zip files from files in a certain directory. After Download, for a lot of users - the zip file is empty. However, for other users - the file isn't empty. Is it something I'm doing wrong?

header('Content-type: application/zip');
header('Cont开发者_运维问答ent-Disposition: attachment; filename="'.$id.'.zip"');
header('Cache-Control: private');
ob_clean();
flush();
readfile("".$id.".zip");
exit;


Better add some error control:

$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;

Additionally triple check your output buffering configuration vs. readfile.


I recommended this as a suggestion earlier, here is a skeleton of what I am talking about. It is untested as I don't have access to php at the moment.

$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;
0

精彩评论

暂无评论...
验证码 换一张
取 消