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调用三种数据库的方法(2)
Oct 09 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
php 缩略图实现函数代码
Jun 23 PHP
php中自定义函数dump查看数组信息类似var_dump
Jan 27 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
thinkPHP5.0框架模块设计详解
Mar 18 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
laravel框架中视图的基本使用方法分析
Nov 23 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
PHP新手上路(六)
2006/10/09 PHP
php入门教程 精简版
2009/12/13 PHP
PHP答题类应用接口实例
2015/02/09 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
潜说js对象和数组
2011/05/25 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
Ruby元编程基础学习笔记整理
2016/07/02 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
计算机求职自荐信范文
2014/04/19 职场文书
小学运动会口号
2014/06/07 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
党员民主评议自我评价
2014/10/20 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python