php利用header函数下载各种文件

 更新时间:2016年08月24日 09:33:02   作者:※WYF※  
这篇文章主要为大家详细介绍了php利用header函数下载各种文件的代码,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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读取汉字的点阵数据

    本文给大家详细讲述了使用PHP读取汉字的点阵数据的方法和示例,十分的实用,有需要的小伙伴可以参考下。
    2015-06-06
  • ThinkPHP 连接Oracle数据库的详细教程[全]

    ThinkPHP 连接Oracle数据库的详细教程[全]

    最近收集了一些关于THinkPHP连接Oracle数据库的问题,有很多朋友按照连接mysql的方法来操作,导致有一些方法在Oreale中无法正常使用
    2012-07-07
  • Yii核心组件AssetManager原理分析

    Yii核心组件AssetManager原理分析

    这篇文章主要介绍了Yii核心组件AssetManager原理分析,较为详细的分析了AssetManager组件的原理与实现过程,有助于深入了解yii框架的特性,需要的朋友可以参考下
    2014-12-12
  • 浅谈PHP中静态方法和非静态方法的相互调用

    浅谈PHP中静态方法和非静态方法的相互调用

    下面小编就为大家带来一篇浅谈PHP中静态方法和非静态方法的相互调用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法

    TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法

    这篇文章主要介绍了TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法,结合实例形式分析了thinkPHP5显示错误信息及行号的相关配置文件与设置修改方法,需要的朋友可以参考下
    2019-06-06
  • Smarty最简单实现列表奇偶变色的方法

    Smarty最简单实现列表奇偶变色的方法

    这篇文章主要介绍了Smarty最简单实现列表奇偶变色的方法,实例分析了Smarty属性与方法的相关使用技巧,需要的朋友可以参考下
    2015-07-07
  • PHP+Ajax异步带进度条上传文件实例

    PHP+Ajax异步带进度条上传文件实例

    这篇文章主要介绍了PHP+Ajax异步带进度条上传文件实例代码,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下。
    2016-11-11
  • ThinkPHP视图查询详解

    ThinkPHP视图查询详解

    这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下
    2014-06-06
  • 初识laravel5

    初识laravel5

    laravel5发布了,目前国内相关资料还比较少,只能先翻墙去官网先看看了,初步总结了一些变化,就想写下来。
    2015-03-03
  • thinkPHP3.1验证码的简单实现方法

    thinkPHP3.1验证码的简单实现方法

    这篇文章主要介绍了thinkPHP3.1验证码的简单实现方法,实例分析了thinkPHP3.1使用图形类生成验证码的相关技巧,需要的朋友可以参考下
    2016-04-04

最新评论