赞
踩
相信很多小伙伴,在日常开放中都会遇到大文件下载的情况,大文件下载方式也有很多,比如非常流行的分片下载、断点下载;当然也可以结合Nginx来实现大文件下载,在中小项目非常适合使用。
在nginx配置中,配置内部访问路径,使用 internal 来限制内部,配置如下:
server {
location /downloadFile {
alias 文件所在目录;
internal; # 仅限内部调用
}
}
具体代码如下:
/**
*
* @param filePath 文件路径
* @param originalName 源文件名
* @param response
*/
@GetMapping("/downloadFile")
public void downloadFile(String filePath, String originalName, HttpServletResponse response) {
File file = new File("/upload/files/images/test/test.jpg");
String[] split = filePath.split("\\/");
String yyyyMMdd = split[2];
log.info(file.getPath());
try {
String fileName = URLEncoder.encode(originalName, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
//设置URI给nginx进行内部的跳转/ngndownload
response.setHeader("X-Accel-Redirect", "/downloadFile/" + yyyyMMdd + "/" + fileName );
} catch (IOException e) {
e.printStackTrace();
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。