public void getDownloadFile() throws Exception {
HttpServletResponse resp = (HttpServletResponse) ServletActionContext .getResponse();
String fileName = request.getParameter("filename");
fileName = new String(fileName.getBytes("ISO8859-1"), "UTF-8");
System.out.println("----------------"+request.getHeader("User-Agent")) ;
String encode = "GB2312";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception) {
}
encode = "ISO-8859-1";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception1) {
}
encode = "UTF-8";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception2) {
}
encode = "GBK";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception3) {
}
String fname="";
String fe= request.getHeader("User-Agent").toUpperCase();
if (request.getHeader("User-Agent").toLowerCase()
.indexOf("firefox") > 0) {
fname = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
} else if (request.getHeader("User-Agent").toUpperCase()
.indexOf("MSIE") > 0) {
fname = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
}else if (request.getHeader("User-Agent").toUpperCase()
.indexOf("CHROME") > 0) {
fname = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
}
System.out.println("---"+fname);
resp.setContentType("application/octet-stream; ");
resp.addHeader("Content-Disposition", "attachment; filename=\"" + fname + "\"");
String extension=fileName.substring(fileName.lastIndexOf(".")+1);
if(extension.equals("doc")){
resp.setContentType("application/ms-word");
}else if(extension.equals("pdf")){
resp.setContentType("application/pdf");
}
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
String path=ServletActionContext.getServletContext().getRealPath("/")+"file\\law\\";
try {
bis = new BufferedInputStream(new FileInputStream(path + fileName));
bos = new BufferedOutputStream(resp.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
} catch(final IOException e) {
System.out.println ( "IOException." + e );
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}
HttpServletResponse resp = (HttpServletResponse) ServletActionContext .getResponse();
String fileName = request.getParameter("filename");
fileName = new String(fileName.getBytes("ISO8859-1"), "UTF-8");
System.out.println("----------------"+request.getHeader("User-Agent")) ;
String encode = "GB2312";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception) {
}
encode = "ISO-8859-1";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception1) {
}
encode = "UTF-8";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception2) {
}
encode = "GBK";
try {
if (fileName.equals(new String(fileName.getBytes(encode), encode))) {
System.out.println("----------------"+encode) ;
}
} catch (Exception exception3) {
}
String fname="";
String fe= request.getHeader("User-Agent").toUpperCase();
if (request.getHeader("User-Agent").toLowerCase()
.indexOf("firefox") > 0) {
fname = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
} else if (request.getHeader("User-Agent").toUpperCase()
.indexOf("MSIE") > 0) {
fname = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
}else if (request.getHeader("User-Agent").toUpperCase()
.indexOf("CHROME") > 0) {
fname = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
}
System.out.println("---"+fname);
resp.setContentType("application/octet-stream; ");
resp.addHeader("Content-Disposition", "attachment; filename=\"" + fname + "\"");
String extension=fileName.substring(fileName.lastIndexOf(".")+1);
if(extension.equals("doc")){
resp.setContentType("application/ms-word");
}else if(extension.equals("pdf")){
resp.setContentType("application/pdf");
}
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
String path=ServletActionContext.getServletContext().getRealPath("/")+"file\\law\\";
try {
bis = new BufferedInputStream(new FileInputStream(path + fileName));
bos = new BufferedOutputStream(resp.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
} catch(final IOException e) {
System.out.println ( "IOException." + e );
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}