php nginx用x-sendfile控制文件下载权限
2017-09-27 15:03
691 查看
需求
有个页面(php)有个按钮是需要控制下载权限的,付过款用户才可以下载;我们服务器用的nginx,搜了一下后决定用x-sendfile做;
实现
挺简单的,两步搞定,不过我一开始不了解,走了不少弯路;
一、配置nginx
这里internal表示:/me/Public/courseFile/ 这个开头的url只能内部访问了;
alias 后面的是文件存放文件夹(绝对路径);
二、php代码使用
我这里直接就上代码了
我这里用的thinkphp ,换成原生的语法一样的,代码在这了;
参考:http://blog.csdn.net/qq_34839657/article/details/52812885
有个页面(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 的 X-Sendfile 机制控制文件访问权限(php版)
- 使用 Nginx 的 X-Sendfile 机制提升 PHP 文件下载性能
- 使用Nginx的X-Sendfile机制提升PHP文件下载性能
- 在Nginx中使用X-Sendfile头提升PHP文件下载的性能(针对大文件下载)
- 使用Nginx的X-Sendfile机制提升PHP文件下载性能
- php以不同名字下载同一个文件(x-sendfile) 【转】
- 在PHP中使用X-SendFile头让文件下载更快
- PHP X-sendfile实现文件下载
- Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
- 在PHP中使用X-SendFile头让文件下载更快
- PHP X-sendfile实现文件下载
- php以不同名字下载同一个文件(x-sendfile)
- Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
- Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置
- Nginx禁止目录执行php文件权限
- php强制下载文件download file
- 访问不存在的php文件时为啥nginx会报“No input file specified.”这句话
- nginx服务器访问时没解析PHP,直接下载php文件
- nginx报错:403 Forbidden 并且访问首页index.php是下载文件的状态
- Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置