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 利用header 函数 下载各种文件的更多相关文章
- 微信小程序开发 -- 通过云函数下载任意文件
微信小程序开发 -- 通过云函数下载任意文件 1.云开发介绍 微信小程序开发者众所周知,小程序开发拥有许多限制,当我还是一个菜鸟入门的时候,第一关就卡在了没有备案域名的HTTP请求上面,那时候云开 ...
- php header函数下载文件实现代码
在php中header函数的使用很大,header不但可以向客户端发送原始的 HTTP 报头信息,同时还可以直接实现文件下载操作 header函数最常用的不是用于下载而是用于发送http类的 跳转 它 ...
- PHP——使用header()函数下载文件
思路:先指明内容的MIME类型,内容描述,内容长度(也即文件大小). 一.下载txt文件的程序: <?phpheader('Content-Type:text/plain');header('C ...
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
- 利用base64函数,对文件进行转码加密
设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的内容就是通过base64转码后传输的.Base64-encoded后, 数据要比原始数据多占用 33% 左右的空间. ...
- php自定义函数: 下载远程文件 httpcopy
<?php function httpcopy($url, $file="", $timeout=60) { $file = empty($file) ? pathinfo( ...
- PHP自定义函数: 下载远程文件
function httpcopy($url, $file="", $timeout=60) { $file = empty($file) ? pathinfo($url,PATH ...
- python 下载大文件
当使用requests的get下载大文件/数据时,建议使用使用stream模式. 当把get函数的stream参数设置成False时,它会立即开始下载文件并放到内存中,如果文件过大,有可能导致内存不足 ...
- 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码
利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏 ...
随机推荐
- 怎样在不对控件类型进行硬编码的情况下在 C#vs 中动态添加控件
文章ID: 815780 最近更新: 2004-1-12 这篇文章中的信息适用于: Microsoft Visual C# .NET 2003 标准版 Microsoft Visual C# .NET ...
- 解决 flex align-items:center 无法居中(微信小程序)
因为最近再做小程序,需要用到flex布局,因为写惯了web项目,初次学习确实感弹性布局的强大(关键是不用再管可恶的ie了). 但是也遇到了align-items:center无法居中的问题,想了很久终 ...
- $SVN代码版本管理工具的使用
SVN是一种代码版本管理工具,具有可视化的操作界面,使用简便,和git的功能类似.下面总结一下SVN的基本用法: 1.安装SVN软件,和安装一般的软件的步骤差不多,这里使用的版本是TortoiseSV ...
- 吐槽 坑爹的MySQL安装路径选择
一般再windows下面安装MySQL我们都会选择msi安装模式,然而安装最新版的MySQL(mysql-installer-community-5.7.11.0.msi 下载地址)发现MySQL默认 ...
- shell set 命令
用set命令可以设置各种shell选项或者列出shell变量.单个选项设置常用的特性.在某些选项之后-o参数将特殊特性打开.在某些选项之后使用+o参数将关闭某些特性,不带任何参数的set命令将显示sh ...
- 1000M链路的理论值计算
1000M约等于(1秒/(1纳秒))/ (1024*1024) ============================================================== 1.什么是 ...
- mysql性能优化的一些建议
mysql性能优化的一些建议 1.EXPLAIN 你的 SELECT 查询 查看rows列可以让我们找到潜在的性能问题. 2.为关键字段添加索引,比如:where, order by, group b ...
- JAVAWeb学习总结(3)
JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...
- phpMyAdmin中config.inc.php设置密码和修改密码的方法
phpMyAdmin有3种授权模式: 1. cookie: 显示一个web登录页面,输入mysql的用户名和密码,然后进入管理界面. $cfg['Servers'][$i]['auth_type'] ...
- RHEL 7 安装 ngnix
安装ngnix yum install -y make apr* autoconf automake curl curl-devel gcc gcc-c++ gtk+-devel zlib-devel ...