使用Java配合nginx实现文件下载、显示的权限控制

nginx的配置:


location /bookres/ {
 internal; #禁止浏览器直接访问
 limit_rate 200k;
 alias d:/test/bookres/;
 error_page 404 =200 @backend; #转由后台处理(tomcat等web容器)
 }

location @backend {
 rewrite ^/bookres/(.*)/(.*)/(.*)/(.*)$ /bookres/?isbn=$1&restype=$2&resid=$3&type=$4 break;
 proxy_pass http://localhost:8081;  #tomcat等web容器
 proxy_redirect off;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 break;
 }

上面的正则配置可匹配如下url/bookres/123/1/down

java中控制的代码:


httpResponse.setHeader("Content-Disposition", "attachment; filename=\""+filename+"\"");
 httpResponse.setHeader("Content-Type","application/octet-stream");
 httpResponse.setHeader("X-Accel-Redirect","/bookres/"+resource.get("res_url"));

//给nginx返回实际文件存在的地址

javashop做最好的Java网店系统

Java b2b2c系统

Java 多用户商城

Java 多店铺商城

Java 多店铺系统

Java CMS系统

Java O2O系统

Java 商城APP

官网请访问:www.javamall.com.cn

Java实现文件下载时关于文件名的控制


filename=new String(filename.getBytes("gbk"),"iso-8859-1");
 httpResponse.setHeader("Content-Disposition", "attachment; filename=\""+filename+"\"");
 httpResponse.setCharacterEncoding("UTF-8");
 httpResponse.setHeader("Content-Type","application/octet-stream");

注意  filename=\”"+filename+”\”" 要带有” ,以处理文件名是中文,且有空格的情况。

javashop做最好的Java网店系统

Java b2b2c系统

Java 多用户商城

Java 多店铺商城

Java 多店铺系统

Java CMS系统

Java O2O系统

Java 商城APP

官网请访问:www.javamall.com.cn