PHP实现下载功能的代码


Posted in PHP onSeptember 29, 2012

wzskynet#163.com
·php escapeshellcmd多字节编码漏洞
·详细讲解PHP中缓存技术的应用
·利用PHP V5开发多任务应用程序
·详细解析 PHP 向 MySQL 发送数据过程
·PHP实现静态发布的方法浅谈
你一定会笑我“下载文件”如此简单都值得说?当然并不是想你想象的那么简单。例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用 “Redirect”的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,例如笔者编写的以下代码:

<? 
// 检查 FORM 是否全部填写完毕... 
if ($form_completed) { 
Header("Location: https://3water.com/download/info_check.exe"); 
exit; 
} 
?>

或者是以下的情况:
<a href="http://www.yourwebl.com/users/download.php?id=124524">开始下载文件</a>

这里利用了ID方式接收要下载文件的编号,然后用“Redirect”的方式连接到实际的网址。

如果你想做一个关于“网上购物”的电子商务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做。程序如下:

<? 
$file_name = "info_check.exe"; 
$file_dir = "/public/www/download/"; 
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在 
echo "文件找不到"; 
exit; 
} else { 
$file = fopen($file_dir . $file_name,"r"); // 打开文件 
// 输入文件标签 
Header("Content-type: application/octet-stream"); 
Header("Accept-Ranges: bytes"); 
Header("Accept-Length: ".filesize($file_dir . $file_name)); 
Header("Content-Disposition: attachment; filename=" . $file_name); 
// 输出文件内容 
echo fread($file,filesize($file_dir . $file_name)); 
fclose($file); 
exit;} 
?>

而如果文件路径是“http”或者“ftp” 网址的话,则源代码会有少许改变,程序如下:
<? 
$file_name = "info_check.exe"; 
$file_dir = "https://3water.com/"; 
$file = @ fopen($file_dir . $file_name,"r"); 
if (!$file) { 
echo "文件找不到"; 
} else { 
Header("Content-type: application/octet-stream"); 
Header("Content-Disposition: attachment; filename=" . $file_name); 
while (!feof ($file)) { 
echo fread($file,50000); 
} 
fclose ($file); 
} 
?>

这样就可以用PHP直接输出文件了。

实现php文件安全下载!

public function downloads($name){ 
$name_tmp = explode("_",$name); 
$type = $name_tmp[0]; 
$file_time = explode(".",$name_tmp[3]); 
$file_time = $file_time[0]; 
$file_date = date("Y/md",$file_time); 
$file_dir = SITE_PATH."/data/uploads/$type/$file_date/"; if (!file_exists($file_dir.$name)){ 
header("Content-type: text/html; charset=utf-8"); 
echo "File not found!"; 
exit; 
} else { 
$file = fopen($file_dir.$name,"r"); 
Header("Content-type: application/octet-stream"); 
Header("Accept-Ranges: bytes"); 
Header("Accept-Length: ".filesize($file_dir . $name)); 
Header("Content-Disposition: attachment; filename=".$name); 
echo fread($file, filesize($file_dir.$name)); 
fclose($file); 
} 
}
PHP 相关文章推荐
PHP新手上路(十四)
Oct 09 PHP
php生成缩略图的类代码
Oct 02 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
php查询ip所在地的方法
Dec 05 PHP
php实现删除空目录的方法
Mar 16 PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 PHP
全面了解PHP中的全局变量
Jun 17 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 PHP
php流量统计功能的实现代码
Sep 29 #PHP
Zend的AutoLoad机制介绍
Sep 27 #PHP
说说PHP的autoLoad自动加载机制
Sep 27 #PHP
php FLEA中二叉树数组的遍历输出
Sep 26 #PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 #PHP
PHP可逆加密/解密函数分享
Sep 25 #PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 #PHP
You might like
MYSQL数据库初学者使用指南
2006/11/16 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
Python中实现输入一个整数的案例
2020/05/03 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
财务副总经理工作职责
2013/11/25 职场文书
小学生期末评语大全
2014/04/21 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
打架检讨书
2015/01/27 职场文书
2015年药店工作总结
2015/04/20 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python