]> 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
remove warnings
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / attachment / GetAttachmentHandler.java
index 77a21ae319825f3ac1682cbc2665c08aa898e9e2..caeb68b0eb6a59d7b6ad4782d365ec2ca8f198e8 100644 (file)
@@ -7,18 +7,55 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;\r
 import javax.servlet.http.HttpServletResponse;\r
 \r
+import org.apache.commons.io.FilenameUtils;\r
 import org.argeo.slc.core.attachment.AttachmentsStorage;\r
 import org.argeo.slc.core.attachment.SimpleAttachment;\r
 import org.springframework.web.HttpRequestHandler;\r
 \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
+                       if (name != null) {\r
+                               contentType = FORCE_DOWNLOAD;\r
+                               String ext = FilenameUtils.getExtension(name);\r
+                               // cf. http://en.wikipedia.org/wiki/Internet_media_type\r
+                               if ("csv".equals(ext))\r
+                                       contentType = "text/csv";\r
+                               else if ("pdf".equals(ext))\r
+                                       contentType = "application/pdf";\r
+                               else if ("zip".equals(ext))\r
+                                       contentType = "application/zip";\r
+                               else if ("html".equals(ext))\r
+                                       contentType = "application/html";\r
+                               else if ("txt".equals(ext))\r
+                                       contentType = "text/plain";\r
+                               else if ("doc".equals(ext) || "docx".equals(ext))\r
+                                       contentType = "application/msword";\r
+                               else if ("xls".equals(ext) || "xlsx".equals(ext))\r
+                                       contentType = "application/vnd.ms-excel";\r
+                               else if ("xml".equals(ext))\r
+                                       contentType = "text/xml";\r
+                       }\r
+               }\r
+\r
+               if (name != null) {\r
+                       contentType = contentType + ";name=\"" + name + "\"";\r
+                       response.setHeader("Content-Disposition", "attachment; filename=\""\r
+                                       + name + "\"");\r
+               }\r
+               response.setHeader("Expires", "0");\r
+               response.setHeader("Cache-Control", "no-cache, must-revalidate");\r
+               response.setHeader("Pragma", "no-cache");\r
+\r
                SimpleAttachment resourceDescriptor = new SimpleAttachment();\r
                resourceDescriptor.setUuid(uuid);\r
                resourceDescriptor.setContentType(contentType);\r