A-A+

PHP无法下载大文件的问题

2014年09月17日 PHP技术文章 评论 2 条 阅读 195 views 次

在PHP的应用中,经常会遇到下载大文件的问题,我们知道,PHP中的freead()函数读取服务器文件会有大小限制的问题,当服务器文件一旦超过某个值,应该是128M 时,客户端便不能再进行下载文件。

首先我们需要在PHP.ini中将其memory_limit设置为 1024 M,再进行测试大文件,比如 180M 的文件,如果问题依旧,哪么就需要在 PHP 的页面中添加如下的代码:

header('content-type:application/octet-stream');
header('accept-ranges: bytes');
header('content-length: '.filesize($filePath));
header('content-disposition:attachment;filename='.$fileName);
$fp = fopen($filePath, "r");
echo fread($fp, filesize($filePath));
fclose($fp);

上面所示的代码是一次性将数据进行输出到客户端的浏览器中,或许跟这个有关系吧,哪么我们再试着从文件中一行一行的读取:

header('content-type:application/octet-stream');
header('accept-ranges: bytes');
header('content-length: '.filesize($filePath));
header('content-disposition:attachment;filename='.$fileName);
$fp = fopen($filePath, "r");
while(!feof($fp)) {
echo fgets($fp, 4096);
}
fclose($fp);

问题解决,PHP已经可以下载大文件了。

标签:

2 条留言  访客:2 条  博主:0 条

  1. osblog

    对于php我只能说好像看懂点,呵呵

  2. 东盟

    这个可以噢

给我留言