<?php
include("DBDA.class.php");
$db = new DBDA();
$bs = $_SERVER["QUERY_STRING"];  //获取由提交界面传过来的参数
$bss = substr($bs,3);  //截取 = 后面的值$sql = "select video from shangpin where id='{$bss}'";  //获取视频文件路径
$str = $db->StrQuery($sql);
$wjm = substr($str,13);  //截取文件名
$lj = substr($str,0,13);  //截取文件所在文件夹路径$file_name = $wjm;   //文件名
//用以解决中文不能显示出来的问题
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER['DOCUMENT_ROOT'].$lj;   //获取当前运行脚本所在的文档根目录
$file_path=$file_sub_path.$file_name;   //拼成一个完整的文件所在的路径// $file = include path
if(file_exists($file_path))  //判断文件是否存在
{header('Content-Description: File Transfer');       //header函数是提交给表头的是一些下载的规格header('Content-Type: application/octet-stream');header('Content-Disposition: attachment; filename='.basename($file_path));header('Content-Transfer-Encoding: binary');header('Expires: 0');header('Cache-Control: must-revalidate, post-check=0, pre-check=0');header('Pragma: public');header('Content-Length: ' . filesize($file_path));ob_clean();   //ob_clean这个函数的作用就是用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的文件,那么想要访问正确,就要经常清除缓冲区flush();   //ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。          所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。$file = fopen($file_path, "r");  //打开指定的文件,r 代表只读,如果找不到,返回falsewhile(!feof($file))  //判断是否存在
    {// send the current file part to the browserprint fread($file, round(3000 * 1024));  //先顶下载速度为3MB// flush the content to the browserflush();  //传给浏览器// sleep one secondsleep(1);  //等待1秒
    }fclose($file);  //关闭文件/*readfile($file_path);  //也可以用这种方法,发送完表头直接输出,不过没有限速exit;*/
}

<?php
include("DBDA.class.php");
$db = new DBDA();
$bs = $_SERVER["QUERY_STRING"];  //获取由提交界面传过来的参数
$bss = substr($bs,3);  //截取 = 后面的值$sql = "select video from shangpin where id='{$bss}'";  //获取视频文件路径
$str = $db->StrQuery($sql);
$wjm = substr($str,13);  //截取文件名
$lj = substr($str,0,13);  //截取文件所在文件夹路径$file_name = $wjm;   //文件名
//用以解决中文不能显示出来的问题
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER['DOCUMENT_ROOT'].$lj;   //获取当前运行脚本所在的文档根目录
$file_path=$file_sub_path.$file_name;   //拼成一个完整的文件所在的路径// $file = include path
if(file_exists($file_path))  //判断文件是否存在
{header('Content-Description: File Transfer');       //header函数是提交给表头的是一些下载的规格header('Content-Type: application/octet-stream');header('Content-Disposition: attachment; filename='.basename($file_path));header('Content-Transfer-Encoding: binary');header('Expires: 0');header('Cache-Control: must-revalidate, post-check=0, pre-check=0');header('Pragma: public');header('Content-Length: ' . filesize($file_path));ob_clean();   //ob_clean这个函数的作用就是用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的文件,那么想要访问正确,就要经常清除缓冲区flush();   //ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。$file = fopen($file_path, "r");  //打开指定的文件,r 代表只读,如果找不到,返回falsewhile(!feof($file))  //判断是否存在{// send the current file part to the browserprint fread($file, round(3000 * 1024));  //先顶下载速度为3MB// flush the content to the browserflush();  //传给浏览器// sleep one secondsleep(1);  //等待1秒}fclose($file);  //关闭文件/*readfile($file_path);  //也可以用这种方法,发送完表头直接输出,不过没有限速exit;*/
}

转载于:https://www.cnblogs.com/u1020641/p/6104239.html

PHP文件可限速下载代码相关推荐

  1. 百度文件不限速下载网页版

    使用方法: KinhDownload网页版地址:https://pan.kdbaidu.com 1.打开网页地址输入百度网盘分享链接即可解析直链, 如果分享链接有密码那就填写密码后再点击进行解析等: ...

  2. php 文件限速下载代码

    <?php include("DBDA.class.php"); $db = new DBDA(); $bs = $_SERVER["QUERY_STRING&qu ...

  3. Java 使用 FTP 实现大文件上传下载

    Java 上传下载 1G 以上的文件可以通过 http 协议或 ftp 实现,但是 http 协议对文件上传大小有限制,而且还不稳定,因此这里使用 ftp 上传. ftp 上传方式有两种: 一.ASC ...

  4. 大文件的优雅下载方法 - 百度云无限速

    本文的方法好像失效了,,,gg 苦于 linux 没有什么像样的 bt 下载工具,就尝试通过百度云离线下载,离线下载下载速度是非常可观的,然后在从百度云获取.不过百度云限速确实恶心,正常情况下百度云限 ...

  5. C#限速下载网络文件

    代码: using System; using System.Collections.Concurrent; using System.Collections.Generic; using Syste ...

  6. php文件断点续传,php文件下载限速,文件断点续传,多线程下载文件原理解析

    文件下载限速 首先,我们写一段使用php输出文件给浏览器下载的代码<?php /** * Created by PhpStorm. * User: tioncico * Date: 19-2-4 ...

  7. Python利用Requests获取2TB大容量不限速小麦魔方网盘/小麦云盘(Own-Cloud.Cn)的文件直链并下载文件

    我们在浏览网页的时候一般都会看到很多好用的网盘,最近很多网盘都是一些开发者比较喜欢使用的,原因大多都是他们不像某盘一样限速,要求充会员而且还要广告.这些大容量的网盘大多也是开源的,所以我们也不能存储一 ...

  8. python3文件下载-python3获取文件中url内容并下载代码实例

    这篇文章主要介绍了python3获取文件中url内容并下载代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env py ...

  9. file上传代码 ios_iOS-实现文件上传下载

    iOS开发中会经常用到文件上传下载的功能,这篇文件将介绍一下使用asp.net webservice实现文件上传下载. 首先,让我们看下文件下载. 这里我们下载cnblogs上的一个zip文件.使用N ...

最新文章

  1. 仿win8磁贴界面以及功能
  2. Python 基础 函数
  3. hdu1532(最大流裸题)
  4. 单页面应用SPA的优缺点
  5. dataframe保存为txt_如何批量查找并修改替换 Word、PPT、Excel、PDF、TXT等文件的内容...
  6. vue中央事件总线eventBus的简单理解和使用
  7. 即时通讯应用战争开打,到底谁能最终定义我们的交流方式?
  8. [置顶]       IE与FireFox的JavaScript兼容问题
  9. 创建一个Flash站点的十大技巧
  10. Pytorch + LSTM
  11. 游戏开发之魔塔游戏分析
  12. mac 电脑连接不上github_我电脑中的一些常用软件
  13. 在线编程无法在sublime中使用input()和raw_input()的解决方法
  14. Code[VS]1302 小矮人
  15. 一元非线性方程求根的算法——二分法/牛顿迭代法
  16. 贪心科技机器学习训练营(十一)
  17. java计算机毕业设计高速公路收费管理源码+mysql数据库+系统+lw文档+部署
  18. ffmpeg笔记(一)音视频基础
  19. Python生成声音波形、模拟钢琴音色
  20. ipad pro无法连接wifi终极解决方法

热门文章

  1. html ts 播放,vue文件拆分为html + ts + css
  2. Markdown支持的语言
  3. sublime text3 快速生成方法注释
  4. 2022牛客寒假算法基础集训营2 签到题7题
  5. 2020 年百度之星·程序设计大赛 - 初赛一 Drink
  6. html中倒计时精确到毫秒,倒计时功能 精确到毫秒
  7. redis list设置过期时间_面试官:你在Redis中设置过带过期时间的Key吗?
  8. android 3d布局轮播,android 图片/视频混合轮播控件banner
  9. mysql拷贝目录迁移方案_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...
  10. 高并发→秒杀功能、难点共有数据排队、优化方案