文档章节

php下载文件

不肥的小肥羊
 不肥的小肥羊
发布于 2015/11/17 13:34
字数 288
阅读 9
收藏 0
 /**
 * 下载文件
 * 可以指定下载显示的文件名,并自动发送相应的Header信息
 * 如果指定了content参数,则下载该参数的内容
 * @param string $filename 下载文件名
 * @param string $showname 下载显示的文件名
 * @param string $content  下载的内容
 * @param integer $expire  下载内容浏览器缓存时间
*/
function download($filename, $showname = '', $content = '', $expire = 180) 
{
    if(is_file($filename)) 
    {
        $length = filesize($filename);
    }
    else if($content != '') 
    {
        $length = strlen($content);
    }
    else 
    {
        die('下载文件不存在!');
    }
    if(trim($showname) == "") 
    {
        $showname = $filename;
    }
    //中文文件名不兼容修改
    //$showname = basename($showname);
    $tmpA = explode('/', $showname);
    $showname = end($tmpA);

    if(!empty($filename)) 
    {
        $type = mime_content_type($filename);
    }
    else
    {
        $type    =   "application/octet-stream";
    }
    //发送Http Header信息 开始下载
    header("Pragma: public");
    header("Cache-control: max-age=".$expire);
    //header('Cache-Control: no-store, no-cache, must-revalidate');
    header("Expires: " . gmdate("D, d M Y H:i:s", time() + $expire) . "GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . "GMT");
    header("Content-Length: " . $length);
    header("Content-type: " . $type.'; charset=utf-8');
    header('Content-Encoding: none');
    header("Content-Transfer-Encoding: binary" );
    
    //解决各个浏览器下载文件名乱码问题
    $ua = $_SERVER["HTTP_USER_AGENT"];
    $encoded_filename = urlencode($showname);
    $encoded_filename = str_replace("+", "%20", $encoded_filename);
    if (preg_match("/MSIE/", $ua)) 
    {
        header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
    } 
    else if (preg_match("/Firefox/", $ua)) 
    {
        header('Content-Disposition: attachment; filename*="utf8\'\'' . $showname . '"');
    } 
    else 
    {
        header('Content-Disposition: attachment; filename="' . $showname . '"');
    }
    
    if($content == '' ) 
    {
        readfile($filename);
    }
    else 
    {
        echo($content);
    }
    exit();
}


本文转载自:

不肥的小肥羊
粉丝 1
博文 49
码字总数 10524
作品 0
浦东
程序员
私信 提问
php文件上传与下载

php文件上传 在通过form表单进行文件上传的,PHP需要用到预定义变量$_FILES $_FILES['userfile']['name'] 客户端机器文件的原名称。 $_FILES['userfile']['type'] 文件的 MIME 类型,如果浏览......

mrmusic
2016/04/03
93
0
PHP使用header方式实现文件下载

php文件下载可以使用http的请求头加上php的IO可以实现,很久之前写过这么一个功能,后来代码没了,今天记录一下 1、先看一下一个正常的http请求 HTTP/1.1 200 OKServer: TengineContent-Type...

踏雪无痕SS
2017/11/01
0
0
Windows下PHP和Apache的安装与配置

在这里以PHP5为例介绍一下Windows下Apache和PHP5的安装与配置方法. 一 下载安装程序 Apache可以从http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/下载 PHP可以从http://www.ph...

于涛ns_天使
2013/02/06
126
0
IIS+PHP+MYSQL安装配置步骤

首先下载php-5.2.0-win32.zip,mysql-noinstall-5.0.22-win32.zip和phpMyAdmin-2.9.1.1-all-languages.zip。这三个文件的下载地址可以在百度搜索得到。 php-5.2.0-win32.zip下载地址:http:...

晨曦之光
2012/04/24
1K
0
PHPWAMP开启php_stomp.dll的具体方式,php5.6开启stomp的图解过程

友情提示:其他版本,方式一样的,大家依样画葫芦即可。 首先下载PHP 扩展php_stomp.dll文件,在php官方网站搜索“Stomp”,搜索后,如下图 如下图点击“Installation” 点击Installation后进...

Lccee
2017/01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
7
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
14
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3K
24
SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
46
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部