code
@RequestMapping(value = "/down.do")
public void down(HttpServletRequest req, HttpServletResponse response, @RequestParam(defaultValue = "m1.jpg") String fname) {
ServletOutputStream outputStream = null
String downFileName = "下载图片.jpg"
try {
outputStream = response.getOutputStream()
// req.getServletContext()可能为空
String realPath = req.getSession().getServletContext().getRealPath("/WEB-INF/img")
Path path = Paths.get(realPath, fname)
String filenamedisplay = java.net.URLEncoder.encode(downFileName, StandardCharsets.UTF_8.name())
if ("FF".equals(SysUtils.getBrowser(req))) {
// 针对火狐浏览器处理方式不一样了
filenamedisplay = new String(downFileName.getBytes(StandardCharsets.UTF_8.name()), StandardCharsets.ISO_8859_1.name())
}
response.setHeader("Content-Disposition", "attachment;filename=" + filenamedisplay)
if (Files.exists(path)) {
Files.copy(path, outputStream)
}
} catch (Exception e1) {
e1.printStackTrace()
} finally {
IOUtils.closeQuietly(outputStream)
}
}
/**
* 获取浏览器
*
* @param request
* @return
*/
public static String getBrowser(HttpServletRequest request) {
String userAgent = request.getHeader("USER-AGENT").toLowerCase();
if (userAgent != null) {
if (userAgent.indexOf("msie") >= 0) {
return "IE";
} else if (userAgent.indexOf("firefox") >= 0) {
return "FF";
} else if (userAgent.indexOf("safari") >= 0) {
return "SF";
}
if (userAgent.indexOf("mozilla") >= 0) {
return "Chrome";
}
}
return null;
}