您的位置:首页 > 运维架构 > Nginx

php nginx用x-sendfile控制文件下载权限

2017-09-27 15:03 691 查看
需求

有个页面(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx php