php nginx实现文件下载
配置nginx
server {
listen 80;
server_name demo.com; #你的域名
root "D:/wwwroot/demo"; # 你的项目路径
# 下载文件关键配置
location /download/ {
internal;
alias G:/files/; # 文件的路径
sendfile on; # 开启高效文件传输模式
autoindex on; # 开启目录文件列表
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
charset utf-8,gbk; # 避免中文乱码
}
...
}
PHP代码实现逻辑
以下代码会下载 G:/files/demo.rar 文件,请确保文件存在
<?php
$origin_name = 'demo.rar';
// 启用 nginx X-Accel 下载
header('Content-Type: application/octet-stream');
$encoded_fname = rawurlencode($origin_name);
header('Content-Disposition: attachment;filename="'.$encoded_fname.'";filename*=utf-8'."''".$encoded_fname);
header('X-Accel-Redirect: '. '/download/'. $origin_name);
header('X-Accel-Buffering: yes');
>