背景:
java提供接口,进行鉴权。
鉴权成功后将下载指向nginx,收nginx进行下载代理。
直接访问nginx不能下载,只能走重定向下载。
java
@ApiOperation(value = "下载文件")
@GetMapping("downloadFile/{fileId}")
public void downloadFile(@PathVariable String fileId, HttpServletRequest httpServletRequest, HttpServletResponse response){
// 鉴权代码略
// 获取文件相对路径
String fileName = scriptInfoService.getFileName(fileId);
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setHeader("Content-Type", "application/octet-stream");
response.setHeader("X-Accel-Redirect","/file/" + fileName);
}
nginx
location /file {
internal; //非定向不允许访问
alias d:/data/file/;
}