如何通过 PHP 脚本下载大文件?
要通过 PHP 脚本下载大文件,代码如下:
示例
<?php function readfile_chunked($filename,$retbytes=true) { $chunksize = 1*(1024*1024); // how many bytes per chunk the user wishes to read $buffer = ''; $cnt =0; $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; if ($retbytes) { $cnt += strlen($buffer); } } $status = fclose($handle); if ($retbytes && $status) { return $cnt; // return number of bytes delivered like readfile() does. } return $status; } ?>
输出
这将产生以下输出:
The large file will be downloaded.
函数 ‘readfile_chunked’(用户自定义)接受两个参数 - 文件名和 ‘true’ 的默认值,表示返回的字节数,这意味着大文件已成功下载。变量 ‘chunksize’ 已声明为需要读取的每个块的字节数。 ‘buffer’ 变量被赋值为 null, ‘cnt’ 被设置为 0。文件以二进制读取模式打开并赋值给变量 ‘handle’。
直到 ‘handle’ 的文件结尾,while 循环运行并根据需要读取的块数读取文件内容。接下来它显示在屏幕上。如果 ‘retbytes’(函数的第二个参数)的值为 true,则将缓冲区的长度添加到 ‘cnt’ 变量。否则,关闭文件并返回 ‘cnt’ 值。最后,函数返回 ‘status’。
广告