如何通过 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’。

更新于: 2020-04-09

2K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告