PHP文件下载实例代码浅析


Posted in PHP onAugust 17, 2016

文件下载的功能对一个网站而言基本上是必备的了,今天就来看看PHP是如何实现文件下载的吧。

无控制类型

这里说的无控制类型是指 没有添加PHP代码控制的资源可以被直接下载的那些类型。一般而言,压缩文件.rar; 音视频文件:..avi等等也可以被直接下载。但是音频和mp4则会直接被浏览器解析播放。
如下图:

.avi文件

PHP文件下载实例代码浅析

.rar文件

PHP文件下载实例代码浅析

.mp4,MP3,图片等会被直接解析

PHP文件下载实例代码浅析

核心代码

使用php代码控制文件的下载合适很简单的。我们住需要很少的代码便可以完成如此复杂的工作。

类型

// 使用basename函数可以获得文件的名称而不是路径信息,保护了服务器的目录安全性
header("content-disposition:attachment;filename=".basename($filename));

长度

header("content-length:".filesize($filename));

实现函数

<?php

$filename = $_GET['filename'];
// 使用basename函数可以获得文件的名称而不是路径信息,保护了服务器的目录安全性
header("content-disposition:attachment;filename="$filename);
header("content-length:".filesize($filename));
readfile($filename);


?>

优化

上面指定文件名称的时候我们没有使用一个叫basename的函数,这样我们下载文件的时候将会连带着其在服务器上的文件的完整的路径。

注意: 下载文件的名称一定不能包含其在服务器上的完整路径名称,否则有可能会导致部分资源的泄露。即使有办法能控制访问资源的权限,但是使用basename函数也是很好的。 

原始下载文件的名称

PHP文件下载实例代码浅析

优化后的文件下载名称

PHP文件下载实例代码浅析

总结

php文件下载使用起来相较于Java实现真的是太方便了呢。在下载文件的内部,有许多的信息提供给我们,通过这些封装好的信息,我们可以实现更加优雅的文件下载系统。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php radio 单选框获取与保持值的实现代码
May 15 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
php接口与接口引用的深入解析
Aug 09 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
linux下编译安装memcached服务
Aug 03 PHP
PHP常用编译参数中文说明
Sep 27 PHP
用php来限制每个ip每天浏览页面数量的实现思路
Feb 24 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
php中的常用魔术方法汇总
Feb 14 PHP
PHP递归实现层级树状展开
Apr 01 PHP
thinkphp分页集成实例
Jul 24 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP Ajax实现无刷新附件上传
Aug 17 #PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 #PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 #PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 #PHP
总结PHP中数值计算的注意事项
Aug 14 #PHP
示例详解Laravel的注册重构
Aug 14 #PHP
PHP实现路由映射到指定控制器
Aug 13 #PHP
You might like
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
第七节 类的静态成员 [7]
2006/10/09 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
php显示页码分页类的封装
2017/06/08 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
javascript 函数调用规则
2009/08/26 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
Python判断操作系统类型代码分享
2014/11/22 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
2013届毕业生求职信范文
2013/11/20 职场文书
小学教师师德反思
2014/02/03 职场文书
财产公证书样本
2014/04/04 职场文书
我的梦想演讲稿
2014/04/30 职场文书
小学班主任培训方案
2014/06/04 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
污染环境建议书
2015/09/14 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
如何使用PyCharm及常用配置详解
2021/06/03 Python
python面向对象版学生信息管理系统
2021/06/24 Python
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技