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
PHP产生随机字符串函数
Dec 06 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
PHP实现懒加载的方法
Mar 07 PHP
php简单实现快速排序的方法
Apr 04 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 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 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
2016/10/29 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
jquery中animate动画积累的解决方法
2013/10/05 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
理解JS绑定事件
2016/01/19 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
JS功能代码集锦
2016/05/04 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
使用Python开发windows GUI程序入门实例
2014/10/23 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
python先序遍历二叉树问题
2017/11/10 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
个人简历自我评价范文
2014/02/04 职场文书
一岗双责责任书
2014/04/15 职场文书
供应链金融服务方案
2014/05/25 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
通知格式
2015/04/27 职场文书