String codedfilename = null;
if (null != agent && -1 != agent.indexOf("MSIE")){
String prefix = fileName.lastIndexOf(".")!=-1?fileName.substring(0,fileName.lastIndexOf(".")):fileName;
String extension = fileName.lastIndexOf(".")!=-1?fileName.substring(fileName.lastIndexOf(".")):"";
String name = java.net.URLEncoder.encode(fileName, "UTF8");
if(name.lastIndexOf("%0A")!=-1){
name = name.substring(0,name.length()-3);
}
int limit = 150 - extension.length();
if (name.length() > limit) {
name = java.net.URLEncoder.encode(prefix.substring(0, Math.min(prefix.length(), limit / 9)), "UTF-8");
if(name.lastIndexOf("%0A")!=-1){
name = name.substring(0,name.length()-3);
}
}
codedfilename = name + extension;
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {
codedfilename = "=?UTF-8?B?"+(new String(org.apache.commons.codec.binary.Base64.encodeBase64(fileName.getBytes("UTF-8"))))+"?=";
}else {
codedfilename = fileName;
}
return codedfilename;
}
public void dealSend(final HttpServletRequest request,final HttpServletResponse response) throws ServletException,IOException {
String username = request.getParameter("username");
String filename = request.getParameter("filename");
String fieldname = request.getParameter("fieldname");
ServletContext servletContext = this.getServletContext();
FileManageService fileManageService = (FileManageService) WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean(
"fileService");
try {
byte[] content = xxxx;//your download content
if (content == null )
content = new byte[0];
response.setContentType("application/x-msdownload;charset=UTF-8");
response.setHeader("Content-Length", String.valueOf(content.length));
String agent = request.getHeader("USER-AGENT");
String fileName =processFileName(filename,agent);
logger.info("fileName:"+fileName);
response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
java.io.OutputStream os = response.getOutputStream();
os.write(content);
os.flush();
os.close();
} catch (ProcessNotFoundException e1) {
logger.error(e1);
} catch (Exception e1) {
logger.error(e1);
}