package org.aplikator.server; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.util.logging.Logger; import org.apache.commons.fileupload.util.Streams; import org.aplikator.server.persistence.tempstore.Tempstore; import org.aplikator.server.persistence.tempstore.TempstoreFactory; @WebServlet( name = "ExportServlet", urlPatterns = {"/export"}) public class ExportServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; private static final Logger LOG = Logger.getLogger(ExportServlet.class.getName()); private static final String CHAR_ENCODING = "UTF-8"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String fileId = req.getParameter("fileId"); resp.setCharacterEncoding("UTF-8"); resp.setHeader("Cache-Control", "no-cache"); resp.setHeader("Pragma", "no-cache"); OutputStreamWriter out = new OutputStreamWriter(resp.getOutputStream(), CHAR_ENCODING); try { Tempstore ts = TempstoreFactory.getTempstore(); resp.setHeader("Content-disposition", "attachment; filename*=UTF-8''" + ts.getFilename(fileId)); resp.setContentType("application/octet-stream"); InputStream input = ts.load(fileId); Streams.copy(input, resp.getOutputStream(), true); input.close(); } finally { } } }