1 package tcweb.handler.report; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 6 import javax.servlet.ServletContext; 7 import javax.servlet.ServletOutputStream; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import tcweb.Constants; 12 import tcweb.EventHandler; 13 import tcweb.Option; 14 import tcweb.PathMap; 15 import tcweb.WCException; 16 17 public class OpenReportHandler implements EventHandler { 18 19 public String process(ServletContext sc, HttpServletRequest request, HttpServletResponse response) throws WCException { 20 21 String filepath = request.getParameter("filepath"); 22 try { 23 filepath = new String(filepath.getBytes("ISO-8859-1"), "utf-8"); 24 int fileTypePos = filepath.lastIndexOf("."); 25 String fileType = filepath.substring(fileTypePos+1, filepath.length()); 26 String contentType ="application/octet-stream"; 27 if(fileType.equalsIgnoreCase("txt")){ 28 //contentType = "text/xml"; 29 contentType = Constants.PAGE_CONTENT_TYPE_TEXT; 30 //contentType = "text/html"; 31 }else if(fileType.equalsIgnoreCase("xml")){ 32 contentType = Constants.PAGE_CONTENT_TYPE_XML; 33 }else if(fileType.equalsIgnoreCase("pdf")){ 34 contentType = "application/pdf"; 35 } 36 else if(fileType.equalsIgnoreCase("xls")){ 37 contentType = "application/vnd.ms-excel"; 38 } 39 else if(fileType.equalsIgnoreCase("xlsx")){ 40 contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 41 } 42 // else if(fileType.equalsIgnoreCase("accdb") || fileType.equalsIgnoreCase("mdb")){ 43 // contentType = "application/msaccess"; 44 // }else if(fileType.equalsIgnoreCase("zip")){ 45 // contentType = "application/zip"; 46 // } 47 48 filepath = PathMap.path2SystemSeparator(filepath); 49 50 String fileP = PathMap.trimEndSeparator(Option.getStoragePath()) + filepath; 51 File resultFile = new File(fileP); 52 if (resultFile.exists()==true){ 53 filepath = fileP; 54 }else{ 55 filepath = PathMap.trimEndSeparator(PathMap.getRootTemporaryFolder())+filepath; 56 } 57 58 FileInputStream is=new FileInputStream(filepath); 59 // response.reset(); 60 //response.setHeader("Content-Disposition","inline; filename=Here is the Amazing PDF"); 61 response.setCharacterEncoding("UTF-8"); 62 63 response.setContentType(contentType); 64 //response.setHeader("Content-disposition","attachment;filename="+new String("aaa.pdf".getBytes("gb2312"),"iso8859-1")); 65 66 //response.setHeader("Content-Disposition","attachment;filename="+filename); 67 68 ServletOutputStream sos = response.getOutputStream(); 69 byte[] buffer = new byte[1024]; 70 int len=0; 71 while((len=is.read(buffer))>0){ 72 sos.write(buffer,0,len); 73 } 74 is.close(); 75 sos.flush(); 76 sos.close(); 77 78 } catch (Exception e1) { 79 e1.printStackTrace(); 80 } 81 82 return null; 83 } 84 85 }