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 相关文章推荐
Apache2 httpd.conf 中文版
Nov 17 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
PHP文件读写操作之文件读取方法详解
Jan 13 PHP
解析thinkphp中的M()与D()方法的区别
Jun 22 PHP
Zend Framework页面缓存实例
Jun 25 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
10款实用的PHP开源工具
Oct 23 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
laravel 执行迁移回滚示例
Oct 23 PHP
PHP多进程简单实例小结
Nov 09 PHP
一文搞懂php的垃圾回收机制
Jun 18 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
用Simple Excel导出xls实现方法
2012/12/06 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
Python探索之pLSA实现代码
2017/10/25 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python操作MySQL数据库的方法
2018/06/20 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Django实现内容缓存实例方法
2020/06/30 Python
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
公务员培训自我鉴定
2014/02/01 职场文书
幼儿园优秀教师事迹
2014/02/13 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
班主任评语大全
2014/04/26 职场文书
学生逃课检讨书
2015/02/17 职场文书
民事调解书范文
2015/05/20 职场文书
2016国培学习心得体会
2016/01/08 职场文书