1 31 32 package org.opencms.workplace.tools.workplace.rfsfile; 33 34 import org.opencms.file.CmsObject; 35 import org.opencms.flex.CmsFlexController; 36 import org.opencms.main.CmsException; 37 import org.opencms.security.CmsRole; 38 import org.opencms.security.CmsRoleViolationException; 39 import org.opencms.util.CmsStringUtil; 40 41 import java.io.BufferedInputStream ; 42 import java.io.File ; 43 import java.io.FileInputStream ; 44 import java.io.IOException ; 45 import java.io.InputStream ; 46 import java.net.SocketException ; 47 48 import javax.servlet.ServletException ; 49 import javax.servlet.ServletOutputStream ; 50 import javax.servlet.http.HttpServlet ; 51 import javax.servlet.http.HttpServletRequest ; 52 import javax.servlet.http.HttpServletResponse ; 53 54 66 public final class CmsRfsFileDownloadServlet extends HttpServlet { 67 68 69 private static final long serialVersionUID = -2408134516284724987L; 70 71 74 public CmsRfsFileDownloadServlet() { 75 76 } 78 79 91 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException , ServletException { 92 93 doPost(request, response); 94 } 95 96 117 public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException , ServletException { 118 119 String fileToFind = req.getParameter("filePath"); 121 if (CmsStringUtil.isEmpty(fileToFind)) { 122 throw new ServletException (Messages.get().getBundle().key(Messages.ERR_DOWNLOAD_SERVLET_FILE_ARG_0)); 123 } else { 124 125 CmsFlexController controller = CmsFlexController.getController(req); 126 try { 127 controller.getCmsObject().checkRole(CmsRole.WORKPLACE_MANAGER); 129 } catch (CmsRoleViolationException e) { 130 CmsObject cms = controller.getCmsObject(); 132 CmsException exc = CmsRole.WORKPLACE_MANAGER.createRoleViolationException(cms.getRequestContext()); 133 throw new ServletException (exc.getLocalizedMessage(cms.getRequestContext().getLocale())); 134 } 135 136 File downloadFile = new File (fileToFind); 137 res.setHeader("Content-Disposition", new StringBuffer ("attachment; filename=\"").append( 138 downloadFile.getName()).append("\"").toString()); 139 res.setContentLength((int)downloadFile.length()); 140 141 142 res = controller.getTopResponse(); 143 res.setContentType("application/octet-stream"); 144 145 InputStream in = null; 146 147 ServletOutputStream outStream = null; 149 150 outStream = res.getOutputStream(); 155 in = new BufferedInputStream (new FileInputStream (downloadFile)); 156 157 try { 158 int bit = in.read(); 160 while ((bit) >= 0) { 161 outStream.write(bit); 162 bit = in.read(); 163 } 164 } catch (SocketException soe) { 165 } catch (IOException ioe) { 168 throw ioe; 170 } finally { 171 if (outStream != null) { 172 outStream.flush(); 173 outStream.close(); 174 } 175 in.close(); 176 } 177 } 178 } 179 180 193 protected void service(HttpServletRequest request, HttpServletResponse response) 194 throws ServletException , IOException { 195 196 doPost(request, response); 197 } 198 } 199 | Popular Tags |