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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
php准确计算复活节日期的方法
Apr 18 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 PHP
php实现留言板功能(会话控制)
May 23 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
php求斐波那契数的两种实现方式【递归与递推】
Sep 09 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防注
2007/01/15 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
Python的ORM框架SQLObject入门实例
2014/04/28 Python
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python文件选择对话框的操作方法
2019/06/27 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
一套SQL笔试题
2016/08/14 面试题
自我评价范文分享
2014/01/04 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
少先队工作总结2015
2015/05/13 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP