PHP安全下载文件的方法


Posted in PHP onApril 07, 2016

本文实例讲述了PHP安全下载文件的方法。分享给大家供大家参考,具体如下:

<?php
header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH', dirname(__FILE__));
/**
 * 下载文件
 * @param string $file_path 绝对路径
 */
function downFile($file_path) {
  //判断文件是否存在
  $file_path = iconv('utf-8', 'gb2312', $file_path); //对可能出现的中文名称进行转码
  if (!file_exists($file_path)) {
    exit('文件不存在!');
  }
  $file_name = basename($file_path); //获取文件名称
  $file_size = filesize($file_path); //获取文件大小
  $fp = fopen($file_path, 'r'); //以只读的方式打开文件
  header("Content-type: application/octet-stream");
  header("Accept-Ranges: bytes");
  header("Accept-Length: {$file_size}");
  header("Content-Disposition: attachment;filename={$file_name}");
  $buffer = 1024;
  $file_count = 0;
  //判断文件是否结束
  while (!feof($fp) && ($file_size-$file_count>0)) {
    $file_data = fread($fp, $buffer);
    $file_count += $buffer;
    echo $file_data;
  }
  fclose($fp); //关闭文件
}
downFile(ROOT_PATH . '/down/Sunset.jpg');
?>

说明:文件名称可以接受中文名称。文件格式为 utf-8。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
加强版phplib的DB类
Mar 31 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
php获取301跳转URL简单实例
Dec 16 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
PHP number_format函数原理及实例解析
Jul 14 PHP
Cookie跨域问题解决方案代码示例
Nov 24 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 #PHP
PHP使用token防止表单重复提交的方法
Apr 07 #PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 #PHP
Linux下编译redis和phpredis的方法
Apr 07 #PHP
php 实现进制相互转换
Apr 07 #PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 #PHP
php制作简单模版引擎
Apr 07 #PHP
You might like
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
PHP中的类型约束介绍
2015/05/11 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
php基本函数汇总
2015/07/09 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
深入理解javascript作用域和闭包
2014/09/23 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
js断点调试经验分享
2017/12/08 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
python机器学习之贝叶斯分类
2018/03/26 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
资产经营总监岗位职责
2013/12/04 职场文书
铁路工务反思材料
2014/02/07 职场文书
年终总结会议主持词
2014/03/17 职场文书
法院信息化建设方案
2014/05/21 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
高三数学教学反思
2016/02/18 职场文书
二年级作文之动物作文
2019/11/13 职场文书