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 上传文件类型判断函数(避免上传漏洞 )
Jun 08 PHP
PHP取进制余数函数代码
Jan 19 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
php实现文件预览功能
May 23 PHP
浅析PHP开发规范
Feb 05 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
Yii CGridView用法实例详解
2016/07/12 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
50个比较实用jQuery代码段
2011/09/18 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
vue根据值给予不同class的实例
2018/09/29 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
Python基础练习之用户登录实现代码分享
2017/11/08 Python
Python制作词云的方法
2018/01/03 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
远程教育心得体会
2014/01/03 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
测量工程专业求职信
2014/02/24 职场文书
个人简历自荐信
2014/06/26 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
社会实践活动总结
2015/02/05 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
入党培养人考察意见
2015/06/08 职场文书
高中英语教学反思范文
2016/03/02 职场文书
工作自我评价范文
2019/03/21 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书