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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
ThinkPHP控制器详解
Jul 27 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 PHP
PHP日期和时间函数的使用示例详解
Aug 06 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
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
PHP引用符&amp;的用法详细解析
2013/08/22 PHP
php多重接口的实现方法
2015/06/20 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
详解参数传递四种形式
2015/07/21 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
在Django的session中使用User对象的方法
2015/07/23 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python查看模块安装位置的方法
2018/10/16 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
Python中的self用法详解
2019/08/06 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
通用C#笔试题附答案
2016/11/26 面试题
经典团队口号
2014/06/06 职场文书
护理专业自荐信范文
2015/03/06 职场文书
离婚案件原告代理词
2015/05/23 职场文书
八年级语文教学反思
2016/03/03 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android