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将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
php获取汉字首字母的函数
Nov 07 PHP
PHP防盗链代码实例
Aug 27 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
Thinkphp事务操作实例(推荐)
Apr 01 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
PHP strripos函数用法总结
Feb 11 PHP
php实现微信分享朋友链接功能
Feb 18 PHP
php探针不显示内存解决方法
Sep 17 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 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类中private属性继承问题分析
2012/11/01 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
递归删除一个节点以及该节点下的所有节点示例
2014/03/19 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
PHP如何使用Memcached
2016/04/05 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
js prototype截取字符串函数
2010/04/01 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
python实现括号匹配的思路详解
2018/08/23 Python
python中正则表达式与模式匹配
2019/05/07 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
网站开发实习生的自我评价
2013/12/11 职场文书
应聘自荐信
2013/12/14 职场文书
经销商会议欢迎词
2014/01/11 职场文书
《我的信念》教学反思
2014/02/15 职场文书
python图像处理 PIL Image操作实例
2022/04/09 Python
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技