资源下载

/**
* resource下文件下载
*
* @param fName 文件位置(相对于resource)
* @param dlName 下载文件名
* @param response
*/
@ApiOperation(value = "resource目录下文件下载", notes = "resource目录下文件下载")
@ApiImplicitParams({
@ApiImplicitParam(name = "fName", value = "文件相对于resource存储路径,例如'templates/import/import-stu-template.xlsx'", required = true),
@ApiImplicitParam(name = "dlName", value = "文件下载显示名字", required = true) })
@GetMapping(value = "/res")
public void dlFromResource(String fName, String dlName, HttpServletResponse response) {
InputStream in = null;
try {
in = this.getClass().getClassLoader().getResourceAsStream(fName);
response.setContentType("application/octet-stream;charset=UTF-8");
response.addHeader("Content-Disposition", " attachment;filename=" + dlName);
int count = 0;
byte[] buffer = new byte[4096];
while ((count = in.read(buffer)) > 0) {
response.getOutputStream().write(buffer, 0, count);
}
} catch (Exception e) {
try {
// 文件下载失败
response.getWriter().write("对不起,文件下载失败。失败原因:" + e.getMessage());
// 记录异常
logger.error(e.getMessage());

} catch (Exception e1) {
// 记录异常
logger.error(e1.getMessage());
}
} finally {
try {
if (in != null) {
in.close();
in = null;
}
} catch (Exception e) {
// 记录异常
logger.error(e.getMessage());
}
}
}
posted @ 2020-06-03 08:12  Angelabiubiu  阅读(208)  评论(0)    收藏  举报