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实现小型站点广告管理
Oct 09 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
phplot生成图片类用法详解
Jan 06 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
php上传大文件设置方法
Apr 14 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
PHP回调函数简单用法示例
May 08 PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 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
桌面中心(四)数据显示
2006/10/09 PHP
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php随机显示图片的简单示例
2014/02/15 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
javascript第一课
2007/02/27 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
javascript中的面向对象
2017/03/30 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
python系列 文件操作的代码
2019/10/06 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
化工实习心得体会
2014/09/09 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
师德承诺书2015
2015/04/28 职场文书