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
在字符串中把网址改成超级链接
Oct 09 PHP
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
PHP 图像尺寸调整代码
May 26 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
thinkphp中空模板与空模块的用法实例
Nov 26 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 PHP
PHP如何通过date() 函数格式化显示时间
Nov 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提示Failed to write session data错误的解决方法
2014/12/17 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
js几个验证函数代码
2010/03/25 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
Python画图学习入门教程
2016/07/01 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
Django中的ajax请求
2018/10/19 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
播音主持女孩的自我评价分享
2013/11/20 职场文书
内容编辑个人求职信
2013/12/10 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
绿色环保标语
2014/06/12 职场文书
村级个人对照检查材料
2014/08/22 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript