<?PHP
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
但是我已经阅读了帖子(http://heap.tumblr.com/post/119127049/a-note-about-phps-output-buffer-and-readfile),表明对于大文件应该使用ob_end_clean而不是ob_clean.
我的问题是:使用ob_clean而不是ob_end_clean有什么用?如果ob_end_clean像ob_clean一样工作并避免出现问题,为什么不是所有文档都显示使用ob_end_clean呢?
解决方法:
ob_clean()刷新缓冲区,但使输出缓冲保持活动状态.这意味着你的readfile()输出也将被缓冲.
ob_end_clean()刷新缓冲区,并完全TURNS OFF缓冲,允许readfile()直接转储到浏览器.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。