1 package com.dotmarketing.servlets; 2 3 import java.io.BufferedInputStream ; 4 import java.io.FileInputStream ; 5 import java.io.IOException ; 6 import java.util.StringTokenizer ; 7 8 import javax.servlet.ServletException ; 9 import javax.servlet.ServletOutputStream ; 10 import javax.servlet.http.HttpServlet ; 11 import javax.servlet.http.HttpServletRequest ; 12 import javax.servlet.http.HttpServletResponse ; 13 14 import com.dotmarketing.portlets.files.factories.FileFactory; 15 import com.dotmarketing.util.Config; 16 import com.dotmarketing.util.Logger; 17 import com.dotmarketing.util.UtilMethods; 18 19 public class SpeedyAssetServlet extends HttpServlet { 20 21 private static final long serialVersionUID = 1L; 22 23 24 protected void service(HttpServletRequest request, HttpServletResponse response) 25 throws ServletException , IOException { 26 27 if (Config.CONTEXT == null) { 28 Logger.debug(this, "Asset not Found"); 29 response.sendError(404, "Asset not Found"); 30 return; 31 } 32 33 StringTokenizer _st = new StringTokenizer (request.getRequestURI(), "/"); 35 36 String _fileName = null; 37 while(_st.hasMoreElements()){ 38 _fileName = _st.nextToken(); 39 } 40 41 String mimeType = this.getServletContext().getMimeType(_fileName); 42 if (mimeType == null) 43 mimeType = "application/octet-stream"; 44 else 45 mimeType = mimeType.intern(); 46 47 String ext = UtilMethods.getFileExtension(_fileName); 48 String inode = UtilMethods.getFileName(_fileName); 49 50 Logger.debug(this, "filename:" + _fileName); 51 Logger.debug(this, "mime type:" + mimeType); 52 53 response.setContentType(mimeType); 54 55 56 57 ServletOutputStream out = response.getOutputStream(); 58 try { 59 FileInputStream fis = new FileInputStream (FileFactory.getRealAssetPath(inode, ext)); 60 BufferedInputStream bis = new BufferedInputStream (fis); 61 byte[] buf = new byte[1024]; 62 int i = 0; 63 64 while ((i = bis.read(buf)) != -1) { 65 out.write(buf, 0, i); 66 } 67 bis.close(); 68 fis.close(); 69 out.close(); 70 } catch (Exception e) { 71 Logger.debug(this, "Asset not Found", e); 72 response.sendError(404, "Asset not Found"); 73 } 74 75 76 77 78 79 80 81 82 83 84 } 85 86 87 88 89 } 90 | Popular Tags |