1 package org
.argeo
.slc
.web
.mvc
.attachment
;
3 import java
.io
.IOException
;
5 import javax
.servlet
.ServletException
;
6 import javax
.servlet
.ServletOutputStream
;
7 import javax
.servlet
.http
.HttpServletRequest
;
8 import javax
.servlet
.http
.HttpServletResponse
;
10 import org
.argeo
.slc
.core
.attachment
.AttachmentsStorage
;
11 import org
.argeo
.slc
.core
.attachment
.SimpleAttachment
;
12 import org
.springframework
.web
.HttpRequestHandler
;
14 /** Returns one single result. */
15 public class GetAttachmentHandler
implements HttpRequestHandler
{
16 protected final String FORCE_DOWNLOAD
= "Content-Type: application/force-download";
18 private AttachmentsStorage attachmentsStorage
;
20 public void handleRequest(HttpServletRequest request
,
21 HttpServletResponse response
) throws ServletException
, IOException
{
22 String uuid
= request
.getParameter("uuid");
23 String contentType
= request
.getParameter("contentType");
24 String name
= request
.getParameter("name");
25 if (contentType
== null || "".equals(contentType
.trim())) {
26 contentType
= FORCE_DOWNLOAD
;
29 if (contentType
.trim().equals(FORCE_DOWNLOAD
)) {
31 contentType
= contentType
+ ";name=\"" + name
+ "\"";
32 response
.setHeader("Content-Disposition",
33 "attachment; filename=\"" + name
+ "\"");
35 response
.setHeader("Expires", "0");
36 response
.setHeader("Cache-Control", "no-cache, must-revalidate");
37 response
.setHeader("Pragma", "no-cache");
40 SimpleAttachment resourceDescriptor
= new SimpleAttachment();
41 resourceDescriptor
.setUuid(uuid
);
42 resourceDescriptor
.setContentType(contentType
);
44 response
.setContentType(contentType
);
45 ServletOutputStream outputStream
= response
.getOutputStream();
46 attachmentsStorage
.retrieveAttachment(resourceDescriptor
, outputStream
);
49 public void setAttachmentsStorage(AttachmentsStorage attachmentsStorage
) {
50 this.attachmentsStorage
= attachmentsStorage
;