1 22 23 package org.meshcms.core; 24 25 import java.io.*; 26 import javax.servlet.*; 27 import javax.servlet.http.*; 28 import org.meshcms.util.*; 29 30 33 public final class DownloadZipServlet extends HttpServlet { 34 40 protected void doGet(HttpServletRequest request, HttpServletResponse response) 41 throws ServletException, IOException { 42 processRequest(request, response); 43 } 44 45 51 protected void doPost(HttpServletRequest request, HttpServletResponse response) 52 throws ServletException, IOException { 53 processRequest(request, response); 54 } 55 56 62 protected void processRequest(HttpServletRequest request, HttpServletResponse response) 63 throws IOException { 64 66 UserInfo userInfo = (UserInfo) 67 request.getSession(true).getAttribute("userInfo"); 68 69 if (userInfo == null || userInfo.isGuest()) { 70 response.sendError(HttpServletResponse.SC_NOT_FOUND); 71 return; 72 } 73 74 WebSite webSite = (WebSite) request.getAttribute("webSite"); 75 Path path = new Path(request.getPathInfo()); 76 77 81 82 File file = webSite.getFile(path); 83 84 if (!file.exists()) { 85 response.sendError(HttpServletResponse.SC_NOT_FOUND, 86 "File not found on server"); 87 return; 88 } 89 90 response.setContentType("application/x-download"); 91 String fileName = request.getParameter("filename"); 92 93 if (Utils.isNullOrEmpty(fileName)) { 94 fileName = path.getLastElement(); 95 } 96 97 if (!file.isDirectory()) { 98 fileName = Utils.removeExtension(fileName); 99 } 100 101 response.setHeader("Content-Disposition", "attachment; filename=\"" + 102 fileName + ".zip\""); 103 new ZipArchiver(file, response.getOutputStream()).process(); 104 } 105 } 106 | Popular Tags |