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 }