]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/attachment/GetAttachmentHandler.java
Make attachments more robusts
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / attachment / GetAttachmentHandler.java
index 77a21ae319825f3ac1682cbc2665c08aa898e9e2..b5ac9b5e65ccacf6ca8dda79a2c2267662e9128a 100644 (file)
@@ -13,12 +13,30 @@ import org.springframework.web.HttpRequestHandler;
 \r
 /** Returns one single result. */\r
 public class GetAttachmentHandler implements HttpRequestHandler {\r
+       protected final String FORCE_DOWNLOAD = "Content-Type: application/force-download";\r
+\r
        private AttachmentsStorage attachmentsStorage;\r
 \r
        public void handleRequest(HttpServletRequest request,\r
                        HttpServletResponse response) throws ServletException, IOException {\r
                String uuid = request.getParameter("uuid");\r
                String contentType = request.getParameter("contentType");\r
+               String name = request.getParameter("name");\r
+               if (contentType == null || "".equals(contentType.trim())) {\r
+                       contentType = FORCE_DOWNLOAD;\r
+               }\r
+\r
+               if (contentType.trim().equals(FORCE_DOWNLOAD)) {\r
+                       if (name != null) {\r
+                               contentType = contentType + ";name=\"" + name + "\"";\r
+                               response.setHeader("Content-Disposition",\r
+                                               "attachment; filename=\"" + name + "\"");\r
+                       }\r
+                       response.setHeader("Expires", "0");\r
+                       response.setHeader("Cache-Control", "no-cache, must-revalidate");\r
+                       response.setHeader("Pragma", "no-cache");\r
+               }\r
+\r
                SimpleAttachment resourceDescriptor = new SimpleAttachment();\r
                resourceDescriptor.setUuid(uuid);\r
                resourceDescriptor.setContentType(contentType);\r