public int downloadFile(String fileName, String filePath) {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = servletRequestAttributes.getResponse();
HttpServletRequest request = servletRequestAttributes.getRequest();
if (StringUtils.isNotBlank(fileName) && StringUtils.isNotBlank(filePath)) {
BufferedInputStream bis = null;
InputStream inStream = null;
try {
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
}
URL url = new URL(filePath);
URLConnection conn = url.openConnection();
inStream = conn.getInputStream();
response.setContentType("application/octet-stream");
response.setContentLength(conn.getContentLength());
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
byte[] buffer = new byte[1024];
bis = new BufferedInputStream(inStream);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
return 1;
} catch (MalformedURLException e) {
logger.error(e.getMessage(), e);
} catch (IOException e){
logger.error(e.getMessage(), e);
} catch (Exception e){
logger.error(e.getMessage(), e);
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
if (inStream != null) {
try {
inStream.close();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
}
}
return -1;
}