• 技术文章 >后端开发 >php教程

    浅析PHP 文件下载

    不言不言2018-04-16 11:43:09原创503

    这篇文章介绍的内容是关于浅析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实现真的是太方便了呢。在下载文件的内部,有许多的信息提供给我们,通过这些封装好的信息,我们可以实现更加优雅的文件下载系统。

    相关推荐:

    PHP文件下载

    以上就是浅析PHP 文件下载的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:文件下载 php 浅析
    上一篇:php中使用uuid 下一篇:php各个版本的区别
    线上培训班

    相关文章推荐

    • 你知道这个PHP命令行选项解析库(pflag)吗?• 带你看懂PHP中的class定义类与成员属性方法• PHP中如何才能将时间日期格式化?怎么计算时间差?• 最详细的教你PHP时间戳与日期时间的转换• PHP中应该怎样去完成时区的设置?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网