当前位置: 首页 > 编程日记 > 正文

php 文件限速下载代码

<?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/zxl89/p/6130252.html

相关文章:

【Java】Linux下安装配置Oracle JDK 1.7版本

1 环境 Vmware虚拟机中的Ubuntu 12.04 32位系统 2具体安装步骤 ①下载最新的jdk包 注意jdk区分32位版本和64位版本&#xff0c;要与Ubuntu兼容才行 下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html ②创建一个目录&#xff0c;…

Swift 换肤方案的实现使用SwiftTheme框架

SwiftTheme 框架进行换肤 本地创建多个plist文件 设置不同图片颜色数组 飞机票 demo Foundationimport SwiftTheme// 创建一个枚举类型进行换肤 enum ChangeTheme:Int {case theme1 0;case theme2 1;case theme3 2;// 创建一个静态方法去换肤 去加载本地的plist文件stati…

linux生日_代码简介:让我们用25个Linux事实来庆祝Linux的25岁生日。

linux生日Here are three stories we published this week that are worth your time:这是我们本周发布的三个值得您关注的故事&#xff1a; Linux is 25. Yay! Let’s celebrate with 25 stunning facts about Linux: 6 minute read Linux是25。是的&#xff01; 让我们用有关…

网页中;window.onerror=function(){return!0};

在浏览网页的时候发现一段&#xff1a;window.οnerrοrfunction(){return!0}; 于是就顺手点了搜索&#xff0c;发现是被 adsafe关闭了 。 把adsafe退出就能显示了。 转载于:https://www.cnblogs.com/Tiramisu001/p/6136931.html

xib 拖关联控件的时候报Could not insert new outlet connection错误

~/Library/Developer/XCode/DerivedData 目录中删除对应的项目文件 重新打开工程即可

hdu 4901

计数dp 做不出来真是惭愧。。。 #include <cstdio> #include <cstdlib> #include <cmath> #include <stack> #include <vector> #include <sstream> #include <cstring> #include <string> #include <map> #include <…

初创企业股权架构_初创企业如何以每月不到200美元的价格利用生产级基础架构...

初创企业股权架构Before you can launch a new service, you need infrastructure. You want reliability, scalability, and many other -ilities. But you don’t want to break the bank.在启动新服务之前&#xff0c;您需要基础架构。 您需要可靠性&#xff0c;可伸缩性和许…

git review devops过程

自己搭建的devops环境是gitlab/gerrit/jenkins 1. 首先自己checkout一个自己的代码分支&#xff0c;一般不要在master上做直接修改 2. 修改后git add file, git commit 3. git review 4. jenkins自动部署测试 5. 人工review代码&#xff0c;如果可以就提交并merge&#xff0c;…

swift判断iPhone 各种型号

// iPhoneXR let iPhoneXR:Bool __CGSizeEqualToSize(CGSize(width: 828, height: 1792), UIScreen.main.currentMode?.size ?? CGSize(width: 0, height: 0)); // iPhoneX let iPhoneX:Bool __CGSizeEqualToSize(CGSize(width: 1125, height: 2436), UIScreen.main.curr…

轻有力读后感ppt_如果您希望招聘人员认真对待您,请建立强有力的个人叙述。...

轻有力读后感pptby Garreth Dottin通过Garreth Dottin 如果您希望招聘人员认真对待您&#xff0c;请建立强有力的个人叙述。 (If you want recruiters to take you seriously, build a strong personal narrative.) We’ve all been there. Hunched over a desk. Scrolling th…

每天一个linux命令(10):cat 命令

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容&#xff0c;或者将几个文件连接起来显示&#xff0c;或者从标准输入读取内容并显示&#xff0c;它常与重定向符号配合使用。 1&#xff0e;命令格式&#xff1a; cat [选项] [文件]... 2&#xff0e;命令…

Swift 中使用Alamofire 免证书的设置

let manager SessionManager.defaultmanager.delegate.sessionDidReceiveChallenge {session,challenge inreturn (URLSession.AuthChallengeDisposition.useCredential,URLCredential(trust:challenge.protectionSpace.serverTrust!))}

“System.Data.OracleClient.OracleConnection”已过时

处理办法&#xff1a; 在oracle 安装目录下 找到 Oracle.DataAccess.dll添加引用&#xff0c;然后 using Oracle.DataAccess.Client;其他的都不用动&#xff0c;即可。连接字符串中 如有 用的是 userxxx 就改成user idxxx把原来 Using 的System.Data.OracleClient去掉即可。 --…

我开发的代码,如何申请版权_代码简介:我花了3个月时间申请开发人员职位。 这是我学到的。...

我开发的代码,如何申请版权Here are three stories we published this week that are worth your time:这是我们本周发布的三个值得您关注的故事&#xff1a; I spent 3 months applying to jobs after a coding bootcamp. Here’s what I learned: 5 minute read 编码训练营结…

Chapter 2 Open Book——29

Which left me with nothing to do but try to not look at him…unsuccessfully. 我没什么事情可以做但是我尝试不去看他&#xff0c;但是失败了。 I glanced up, and he was staring at me, that same inexplicable look of frustration in his eyes. 我瞥了一眼&#xff0c;…

js回调与异步加载的用法

以前还是菜鸟的时候&#xff08;虽然现在依然很菜 -_-|| &#xff09;对异步加载与回调函数的技术无比向往&#xff0c;但也一直没有使用过&#xff0c;这次因为页面逻辑太过复杂&#xff0c;一堆请求逻辑&#xff0c;如果还是用顺序请求&#xff0c;页面的速度。。。 领导又要…

Swift 字符串去除换行符空格符

capitalizedLetters&#xff1a;大写controlCharacters&#xff1a;控制符 whitespacesAndNewlines&#xff1a;空格换行 decimalDigits&#xff1a;小数 letters&#xff1a;文字 lowercaseLetters&#xff1a;小写字母 uppercaseLetters&#xff1a;大写字母 nonBaseCharacte…

谈论源码_6,000名自由职业者谈论金​​钱,幸福和对未来的希望

谈论源码More than 6,000 US-based freelancers responded to a new in-depth survey. I dug through the data and pulled out the most interesting insights, which paint a picture of optimistic professionals who have taken control of their own destiny.超过6,000名美…

第一篇随笔——新的开端

新的开端 这是我第一次开通博客也是第一次在博客上写随笔&#xff0c;这既是博客的新开端也是JAVA学习的新开端&#xff0c;希望能好好经营这第一个博客~。 觉得自己专业吗&#xff1f;对专业的期望 对于这个问题我不得不坦然承认虽然进入信安专业已经有一年的时间了&#xff0…

快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理

概述 iptables是一种运行在linux下的防火墙组件&#xff0c;下面的介绍可以快速的学习iptables的入门使用。 特点&#xff08;重要&#xff09; 它的工作逻辑分为 链、表、规则三层结构。数据包通过的时候&#xff0c;在对应表中&#xff0c;规则从上向下匹配&#xff0c;匹配到…

iOS 根据数组中的字典的value值进行排序

NSMutableArray *resArr [NSMutableArray array];// 先把所有值的装进一个数组中NSMutableArray *valArr [NSMutableArray array];for (int i 0; i < arr.count; i ) {NSDictionary *dic arr[i];NSString * str [NSString stringWithFormat:"%-%d",dic["…

矢量数编码有哪几种类型_6种最理想的编码工作(以及吸引每个人的类型)

矢量数编码有哪几种类型by David Venturi大卫文图里(David Venturi) 6种最理想的编码工作(以及吸引每个人的类型) (The 6 most desirable coding jobs (and the types of people drawn to each)) Free Code Camp问了15,000个人&#xff0c;他们是谁&#xff0c;以及他们如何学…

sleep和wait到底什么区别

wait是在当前线程持有wait对象锁的情况下&#xff0c;暂时放弃锁&#xff0c;并让出CPU资源&#xff0c;并积极等待其它线程调用同一对象的notify或者notifyAll方法。注意&#xff0c;即使只有一个线程在等待&#xff0c;并且有其它线程调用了notify或者notifyAll方法&#xff…

Swift Code Snippet

1 swi_crecell func numberOfSections(in tableView: UITableView) -> Int {return 1;}func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {return 5;}// cell高度func tableView(_ tableView: UITableView, heightForRowAt indexPa…

Cocos2d-x lua 编译到Android设备

需要完成Android下ant,ndk,sdk(adt)的环境配置.Java环境配置. 也可以搭建VS下的Lua开发环境. 首先新建项目 cocos new -l lua -d (...address) 然后编译 cocos run -p win32 -s (...address) --ap 19 后面的--ap 19是版本控制. 然后在Eclipse中Import项目,右键项目Build Path添…

c# 数据可视化_#OpenVisConf上的22位数据可视化从业者的10点收获

c# 数据可视化by Siena Duplan通过锡耶纳杜普兰(Siena Duplan) #OpenVisConf上的22位数据可视化从业者的10点收获 (10 Takeaways from 22 Data Visualization Practitioners at #OpenVisConf) Update | May 13, 2016: Videos of all talks are officially live!更新| 2016年5月…

CentOS中Mysql常用操作

安装mysqlyum -y install mysql-server 修改mysql配置vi /etc/my.cnf 这里会有很多需要注意的配置项,后面会有专门的笔记暂时修改一下编码(添加在密码下方): default-character-set utf8设置mysql随系统启动# chkconfig mysqld on ← 设置MySQL服务随系统启动自启动# chkcon…

RXSwift基本使用1

1 cocoapod 安装 import RxSwift import RxCocoa 2 给一个按钮添加点击事件 // 添加点击事件self.rightBtn.rx.tap.subscribe { (event) in}

添加MySql数据库超时设置的相关问题

最近在工作中&#xff0c; 遇到MySql数据库连接超时的问题&#xff0c;申同事帮忙解决了一下&#xff0c;看到原来的MySqlHelper里面没有封装相关的超时方法&#xff0c;就添加了一个&#xff0c;我在这里记录了一下&#xff0c;希望对像我一样入门级的程序员有所帮助&#xff…

了解ES6 The Dope Way Part II:Arrow功能和'this'关键字

by Mariya Diminsky通过玛丽亚迪明斯基(Mariya Diminsky) 了解ES6 The Dope Way Part II&#xff1a;Arrow功能和this关键字 (Learn ES6 The Dope Way Part II: Arrow functions and the ‘this’ keyword) Welcome to Part II of Learn ES6 The Dope Way, a series created t…