需求
有个页面(php)有个按钮是需要控制下载权限的,付过款用户才可以下载;我们服务器用的nginx,搜了一下后决定用x-sendfile做;
实现
挺简单的,两步搞定,不过我一开始不了解,走了不少弯路;
一、配置nginx
location ^~ /me/Public/courseFile/ {
internal;
alias /home/site/jianfeirizhi/me/Public/courseFile/;
}
这里internal表示:/me/Public/courseFile/ 这个开头的url只能内部访问了;
alias 后面的是文件存放文件夹(绝对路径);
二、php代码使用
我这里直接就上代码了
public function file($name)
{
if(true) //有下载权限
{
$filePath = "/me/Public/courseFile/$name"; //注意这个路径跟上面nginx的配置
header('Content-type: application/octet-stream');//告诉浏览器这是一个文件
header('Content-Disposition: attachment; filename="'.$name.'"');//文件描述,页面下载用的文件名,可以实现用不同的文件名下载同一个文件
header("X-Accel-Redirect: $filePath");
}
else {
echo "无下载权限";
}
}
我这里用的thinkphp ,换成原生的语法一样的,代码在这了;
参考:http://blog.csdn.net/qq_34839657/article/details/52812885