如何通过PHP脚本下载大文件?

phpserver side programmingprogramming更新于 2025/4/16 20:07:17

通过PHP脚本下载大文件,代码如下−

示例

<?php
function readfile_chunked($filename,$retbytes=true) {
   $chunksize = 1*(1024*1024); // 用户希望读取每个块多少字节
   $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; // 返回已传送的字节数,就像 readfile() 一样。
   }
   return $status;
}
?>

输出

这将产生以下输出 −

The large file will be downloaded.

函数 ‘readfile_chunked’(用户定义)接受两个参数 - 文件名和返回的字节数的默认值 ‘true’,表示已成功下载大文件。变量 ‘chunksize’ 已声明为需要读取的每个块的字节数。‘buffer’ 变量被赋值为 null,‘cnt’ 设置为 0。文件以二进制读取模式打开并赋值给变量 ‘handle’。

直到到达 ‘handle’ 的文件末尾,while 循环运行并根据需要读取的块数读取文件的内容。接下来,它将显示在屏幕上。如果 ‘retbytes’ 的值(函数的第二个参数)为真,则将缓冲区的长度添加到‘cnt’变量中。否则,关闭文件并返回‘cnt’值。最后,该函数返回‘status’。


相关文章