欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

php教程

PHP大文件限速下载功能示例代码分享

php教程 我的站长站 2022-11-11 共35人阅读

PHP在开发大文件下载功能中,推荐使用文件分段下载,避免文件过大,下载失败或文件损坏。

大文件限速下载php代码

<?php
//设置文件最长执行时间
set_time_limit(0);
if (isset($_GET['filename']) && !empty($_GET['filename'])) {
  $file_name = $_GET['filename'];
  $file = __DIR__ . '/assets/' . $file_name;
} else {
  echo 'what are your searching for?';
  exit();
}
if (file_exists($file) && is_file($file)) {
  $filesize = filesize($file);
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . $filesize);
  header('Content-Disposition: attachment; filename=' . $file_name);
  // 打开文件
  $fp = fopen($file, 'rb');
  // 设置指针位置
  fseek($fp, 0);
  // 开启缓冲区
  ob_start();
  // 分段读取文件
  while (!feof($fp)) {
    $chunk_size = 1024 * 1024 * 2; // 2MB
    echo fread($fp, $chunk_size);
    ob_flush(); // 刷新PHP缓冲区到Web服务器    flush(); // 刷新Web服务器缓冲区到浏览器
    sleep(1); // 每1秒 下载 2 MB
  }
  // 关闭缓冲区
  ob_end_clean();
  fclose($fp);
} else {
  echo 'file not exists or has been removed!';
}
exit();
相关推荐
  • PHP文件下载
  • 下载限速
  • 大文件下载
  • PHP大文件分流下载示例代码

    <?phpset_time_limit(0);$zip_file=&#39;demo.rar&#39;; $fp=fopen($zip_file,&#39;r&#39;);//只读方式打开 $filesize=filesize($zip_file);//文件大小/***********************header头不要设置错了哦****************************/ //返回...

    php教程 16 1年前
  • PHP大文件限速下载功能示例代码分享

    PHP在开发大文件下载功能中,推荐使用文件分段下载,避免文件过大,下载失败或文件损坏。大文件限速下载PHP代码<?php//设置文件最长执行时间set_time_limit(0);if (isset($_GET[&#39;filename&#39;]) && !empty($_GET[&#39;filename&#39;])) { $file_nam...

    php教程 35 1年前
  • Nginx + X-Accel大文件下载示例代码

    Nginx + X-Accel大文件下载示例代码,做个记录以后会用到。// 启用 nginx X-Accel 下载 header(&#39;Content-Type: application/octet-stream&#39;); $encoded_fname = &#39;附件名称&#39;; header(&#39;Content-Disposition: a...

    php教程 20 1年前
  • PHP下载功能手机浏览器乱码和变成HTML格式的解决方法

    今天我的站长站在测试一款下载站源码时发现,发现电脑端下ZIP文件完美无错,用手机浏览器和第三方浏览器下载变成了乱码,苹果手机还会给ZIP下载文件变成html格式。解决方案网上找了很多种解决方法,有的说是编码没设置好,有的说函数错乱。最后测试,我的站长站...

    php教程 46 1年前
  • Accept-Length无法获取下载文件大小解决方法

    php下载文件时,我们一般会加上如下的header信息:header("Content-type: application/octet-stream");header("Accept-Ranges: bytes");header("Accept-Length:".$fileSize); //请用Content-Lengthheader("Content-Disposition: attachment; filename="...

    php教程 38 1年前
  • 大文件分片上传 / 下载限速解决方案

    分片上传将需要上传的文件按照一定的分割规则,分割成相同大小的数据块;初始化一个分片上传任务,返回本次分片上传唯一标识;按照一定的策略(串行或并行)发送各个分片数据块;发送完成后,服务端根据判断数据上传是否完整,如果完整,则进行数据块合成得到原始文件。...

    php教程 40 1年前
  • php文件限速下载示例代码

    限速下载示例代码<?php// 将发送到客户端的本地文件$local_file=&#39;abc.zip&#39;;// 文件名$download_file=&#39;your-download-name.zip&#39;;// 设置下载速率(=> 31.2 kb/s)$download_rate=31.2;if(file_exists($local_file)&&is_file($local_fi...

    php教程 663 1年前
  • PHP大文件限速下载功能示例代码分享

    PHP在开发大文件下载功能中,推荐使用文件分段下载,避免文件过大,下载失败或文件损坏。大文件限速下载PHP代码<?php//设置文件最长执行时间set_time_limit(0);if (isset($_GET[&#39;filename&#39;]) && !empty($_GET[&#39;filename&#39;])) { $file_nam...

    php教程 35 1年前
  • nginx大于10M文件下载限速方案

    一、限制向客户端传输响应的速率句法: limit_rate rate;默认: limit_rate 0;内容: http,server,location,if in location限制向客户端传输响应的速率。在rate被以每秒字节数指定。零值禁用速率限制。该限制是根据请求设置的,因此,如果客户端同时打开两个连接...

    服务器配置 134 1年前
  • 完整的X-Accel-Redirect限速下载大文件方案

    前言网上搜索X-Accel-Redirect限速下载都是千篇一律的教程,如果按照网上的教程开发,下载大文件时,我的站长站测试还是下载一半会失败。我的站长站研究了很久,发现网上的分享的代码,缺少很多参数,整理分享一篇完整的X-Accel-Redirect大文件下载方案。准备工...

    php教程 78 1年前
  • php大文件下载超时中断解决方法

    <?php //设置脚本的最大执行时间,设置为0则无时间限制set_time_limit(0);ini_set(&#39;max_execution_time&#39;, &#39;0&#39;); $file_name = &#39;aa.zip&#39;; //本机文件地址$extension = pathinfo($file_name)[&#39;extension&#39;];$dowloa...

    php教程 39 1年前
  • 大文件分片上传 / 下载限速解决方案

    分片上传将需要上传的文件按照一定的分割规则,分割成相同大小的数据块;初始化一个分片上传任务,返回本次分片上传唯一标识;按照一定的策略(串行或并行)发送各个分片数据块;发送完成后,服务端根据判断数据上传是否完整,如果完整,则进行数据块合成得到原始文件。...

    php教程 40 1年前
  • Nginx + X-Accel大文件下载示例代码

    Nginx + X-Accel大文件下载示例代码,做个记录以后会用到。// 启用 nginx X-Accel 下载 header(&#39;Content-Type: application/octet-stream&#39;); $encoded_fname = &#39;附件名称&#39;; header(&#39;Content-Disposition: a...

    php教程 20 1年前
  • PHP大文件限速下载功能示例代码分享

    PHP在开发大文件下载功能中,推荐使用文件分段下载,避免文件过大,下载失败或文件损坏。大文件限速下载PHP代码<?php//设置文件最长执行时间set_time_limit(0);if (isset($_GET[&#39;filename&#39;]) && !empty($_GET[&#39;filename&#39;])) { $file_nam...

    php教程 35 1年前
  • phpreadfile下载大文件失败解决方法

    phpreadfile下载大文件失败解决方法,原因是PHP内存有限制,需要改为按块下载,就是把大文件切块后逐块下载。if (file_exists($file)){ if (FALSE!== ($handler = fopen($file, &#39;r&#39;))) { header(&#39;Content-Description: File Transfer&#3...

    php教程 49 1年前