这篇文章主要为大家详细介绍了PHP文件下载实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

无控制类型

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

.avi文件

.avi文件会被直接下载

.rar文件

.rar文件会被直接下载

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

.mp3,4,图片等文件会被浏览器直接解析播放

核心代码

使用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函数也是很好的。 

原始下载文件的名称

附带服务器上的路径

优化后的文件下载名称

使用了basename之后的效果

总结

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持爱安网。

最新资讯
何小鹏发全员信:智能汽车成本持续下降 不能只看短期股价涨跌

何小鹏发全员信:智能汽

小鹏汽车董事长兼CEO何小鹏今天发布一封全员邮件,他表
同程艺龙与快手达成战略合作 用户可在快手直接预订旅行服务

同程艺龙与快手达成战

同程艺龙与快手宣布达成战略合作。
代购失业,黑五还在,谁在替你买遍全球?

代购失业,黑五还在,谁在

今年前五个月,中国跨境电商零售出口逆势增长,同比增长12
白发“网红”群体:活成自己最想要的模样

白发“网红”群体:活成

如果廉颇来到这个时代,考察他能力的指标可能不再是饭
中国最贵车企蔚来:市值超奔驰宝马却尚未盈利 未来驶向何处?

中国最贵车企蔚来:市值

登上中国车企市值第一的蔚来,成立才不过6年。而短短六
1张PPT打响1.5万GP淘汰赛:寻找生态位之战

1张PPT打响1.5万GP淘

中国有1.5万家GP,是美国的数倍,没有人知道三五年后这1.5
最新文章
PHP数据源架构模式之表入口模式实例分析

PHP数据源架构模式之

这篇文章主要介绍了PHP数据源架构模式之表入口模式,结
php面向对象基础详解【星际争霸游戏案例】

php面向对象基础详解

这篇文章主要介绍了php面向对象基础,结合星际争霸游戏
php设计模式之抽象工厂模式分析【星际争霸游戏案例】

php设计模式之抽象工

这篇文章主要介绍了php设计模式之抽象工厂模式,结合星
php设计模式之建造器模式分析【星际争霸游戏案例】

php设计模式之建造器

这篇文章主要介绍了php设计模式之建造器模式,结合星际
php的RSA加密解密算法原理与用法分析

php的RSA加密解密算法

这篇文章主要介绍了php的RSA加密解密算法原理与用法,
laravel框架模型和数据库基础操作实例详解

laravel框架模型和数

这篇文章主要介绍了laravel框架模型和数据库基础操作,