php利用header函数下载各种文件


Posted in PHP onAugust 24, 2016

本文实例为大家分享了php header函数下载文件实现代码,供大家参考,具体内容如下

http://www.php.net/manual/en/function.readfile.php

<?php
/**
* 下载文件
* header函数
*
*/


dl_file($_GET ['filename']);

function dl_file($file)
{
 $file = ".//images//" . $file;
 //First, see if the file exists
 
 if (! is_file ( $file ))
 {
  die ( "<b>404 File not found!</b>" );
 }
 
 // Gather relevent info about file
 $len = filesize ( $file );
 $filename = basename ( $file );
 $file_extension = strtolower ( substr ( strrchr ( $filename, "." ), 1 ) );
 
 // This will set the Content-Type to the appropriate setting for the file
 switch ($file_extension)
 {
  case "pdf" :
   $ctype = "application/pdf";
   break;
  case "exe" :
   $ctype = "application/octet-stream";
   break;
  case "zip" :
   $ctype = "application/zip";
   break;
  case "doc" :
   $ctype = "application/msword";
   break;
  case "xls" :
   $ctype = "application/vnd.ms-excel";
   break;
  case "ppt" :
   $ctype = "application/vnd.ms-powerpoint";
   break;
  case "gif" :
   $ctype = "image/gif";
   break;
  case "png" :
   $ctype = "image/png";
   break;
  case "jpeg" :
  case "jpg" :
   $ctype = "image/jpg";
   break;
  case "mp3" :
   $ctype = "audio/mpeg";
   break;
  case "wav" :
   $ctype = "audio/x-wav";
   break;
  case "mpeg" :
  case "mpg" :
  case "mpe" :
   $ctype = "video/mpeg";
   break;
  case "mov" :
   $ctype = "video/quicktime";
   break;
  case "avi" :
   $ctype = "video/x-msvideo";
   break;
  
  // The following are for extensions that shouldn't be downloaded
  // (sensitive stuff, like php files)
  case "php" :
  case "htm" :
  case "html" :
  case "txt" :
   die ( "<b>Cannot be used for " . $file_extension . " files!</b>" );
   break;
  
  default :
   $ctype = "application/force-download";
 }
 
 
 $file_temp = fopen ( $file, "r" );
 
 
 // Begin writing headers
 header ( "Pragma: public" );
 header ( "Expires: 0" );
 header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
 header ( "Cache-Control: public" );
 header ( "Content-Description: File Transfer" );
 // Use the switch-generated Content-Type
 header ( "Content-Type: $ctype" );
 // Force the download
 $header = "Content-Disposition: attachment; filename=" . $filename . ";";
 header ( $header );
 header ( "Content-Transfer-Encoding: binary" );
 header ( "Content-Length: " . $len );
 
 
 //@readfile ( $file );
 echo fread ( $file_temp, filesize ( $file ) );
 fclose ( $file_temp );
 
 exit ();
}

?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP获取当前文件所在目录 getcwd()函数
May 13 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
Feb 15 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
Jan 21 PHP
php中如何执行linux命令详解
Nov 06 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
php强制下载文件函数
Aug 24 #PHP
PHP简单实现数字分页功能示例
Aug 24 #PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 #PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 #PHP
PHP简单判断手机设备的方法
Aug 23 #PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 #PHP
PHP Cookie学习笔记
Aug 23 #PHP
You might like
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
javascript实现下雨效果
2017/03/27 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
Python translator使用实例
2008/09/06 Python
Python牛刀小试密码爆破
2011/02/03 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
python实现周期方波信号频谱图
2018/07/21 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python写入文件自动换行问题的方法
2019/07/05 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
什么是Smart Navigation?
2016/07/03 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
小饰品店的创业计划书范文
2013/12/28 职场文书
新年联欢会主持词
2014/03/27 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
Vue和Flask通信的实现
2021/05/19 Vue.js
如何理解python接口自动化之logging日志模块
2021/06/15 Python
python基础之模块的导入
2021/10/24 Python