PHP安全下载文件的方法

 更新时间:2016年04月07日 11:03:48   作者:ruxingli  
这篇文章主要介绍了PHP安全下载文件的方法,涉及PHP文件的编码设置,转换,判断及下载的相关技巧,需要的朋友可以参考下

本文实例讲述了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 curl用法总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

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

相关文章

  • PHP使用token防止表单重复提交的方法

    PHP使用token防止表单重复提交的方法

    这篇文章主要介绍了PHP使用token防止表单重复提交的方法,通过生成一个加密后的随机数存入session的token变量,同时将该值放入表单隐藏提交,达到防止表单重复提交的功能,需要的朋友可以参考下
    2016-04-04
  • PHP获取文件夹内文件数的方法

    PHP获取文件夹内文件数的方法

    这篇文章主要介绍了PHP获取文件夹内文件数的方法,涉及php操作文件夹及文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP实现逐行删除文件右侧空格的方法

    PHP实现逐行删除文件右侧空格的方法

    这篇文章主要介绍了PHP实现逐行删除文件右侧空格的方法,涉及php针对文件的打开、逐行读取、rtrim函数删除右侧空格及文件保存等技巧,需要的朋友可以参考下
    2015-12-12
  • php实现的替换敏感字符串类实例

    php实现的替换敏感字符串类实例

    这篇文章主要介绍了php实现的替换敏感字符串类,包括了常见的非法字符串检测、白名单、黑名单及字符替换等功能,非常实用,需要的朋友可以参考下
    2014-09-09
  • 如何用PHP实现分布算法之一致性哈希算法

    如何用PHP实现分布算法之一致性哈希算法

    进行大型网站的web开发时,分布式这个词经常出现在我们面前。如: memcache、redis服务器等缓存服务器的负载均衡(分布式cache)、 MySQL的分布式集群,这些都会用到分布式的思想,都要理解分布式算法。接下来以缓存服务器的负载均衡来谈一下一致性哈希算法。
    2021-05-05
  • php addslashes和mysql_real_escape_string

    php addslashes和mysql_real_escape_string

    本文介绍的是用 mysql_real_escape_string对用户提交数据进行整理处理和通过addslashes以及mysql_escape_string这3个类似的功能函数的区别。经过转义的数据可以直接插入到数据库中。
    2010-01-01
  • php获取Google机器人访问足迹的方法

    php获取Google机器人访问足迹的方法

    这篇文章主要介绍了php获取Google机器人访问足迹的方法,涉及正则匹配与预定义服务器变量的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • PHP静态文件生成类实例

    PHP静态文件生成类实例

    这篇文章主要介绍了PHP静态文件生成类,以实例形式演示了PHP生成静态文件的方法,并封装成类文件便于使用,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • 关于PHP中interface的用处详解

    关于PHP中interface的用处详解

    这篇文章主要给大家介绍了关于PHP中interface的用处的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用PHP具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • PHP预定义超全局数组变量小结

    PHP预定义超全局数组变量小结

    这篇文章主要介绍了PHP预定义超全局数组变量,结合实例形式总结分析了预定义超全局数组变量的特性、功能、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-08-08

最新评论