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面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
php实现网站留言板功能
Nov 04 PHP
PHP扩展Memcache分布式部署方案
Dec 06 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
Yii2数据库操作常用方法小结
May 04 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 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
windows中为php安装mongodb与memcache
2015/01/06 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
JavaScript简单编程实例学习
2020/02/14 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
项目经理岗位职责
2013/11/11 职场文书
电大本科自我鉴定
2014/02/05 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS