PHP更快的提供文件下载

我们可以使用Apache的module mod_xsendfile, 让Apache直接发送这个文件给用户


    • $file = "/tmp/中文名.tar.gz";
    •  
    •     $filename = basename($file);
    •  
    •     header("Content-type: application/octet-stream");
    •  
    •     //处理中文文件名
    •     $ua = $_SERVER["HTTP_USER_AGENT"];
    •     $encoded_filename = urlencode($filename);
    •     $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''" . $filename . '"');
    •     } else {
    •      header('Content-Disposition: attachment; filename="' . $filename . '"');
    •     }
    •  
    •     header('Content-Disposition: attachment; filename="' . basename($file) . '"');
    •  
    •     //让Xsendfile发送文件
    •     header("X-Sendfile: $file");

X-Sendfile头将被Apache处理, 并且把响应的文件直接发送给Client.

转载自 http://www.laruence.com/2012/05/02/2613.html

Httpd.conf 配置方法:

LoadModule xsendfile_module   modules/mod_xsendfile.so

XSendFile on



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值