源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

让PHP更快的提供文件下载的代码

  • 时间:2021-12-06 15:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:让PHP更快的提供文件下载的代码
但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让PHP来做转发, 为用户提供文件下载.
[url=http://www.jasny.net/articles/how-i-php-x-sendfile/]How I PHP: X-SendFile[/url]. 我们可以使用Apache的module [url=https://tn123.org/mod_xsendfile/]mod_xsendfile[/url], 让Apache直接发送这个文件给用户:
[u]复制代码[/u] 代码如下:
<?php $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. Lighttpd和Nginx也有类似的模块, 大家有兴趣的可以去找找看
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部