UploadServlet.java
3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package fi.insomnia.bortal.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventMapBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.beans.UtilBeanLocal;
import fi.insomnia.bortal.model.UserImage;
/**
* Servlet implementation class UploadServlet
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super();
// TODO Auto-generated constructor stub
}
private static final Logger logger = LoggerFactory.getLogger(UploadServlet.class);
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@EJB
private transient UserBeanLocal userbean;
@EJB
private transient EventMapBeanLocal eventmapbean;
@EJB
private transient UtilBeanLocal utilbean;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// boolean isMultipart = ServletFileUpload.isMultipartContent(request);
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
CharSequence retmsg = "Tiedosto tallennettu onnistuneesti.";
try {
String contenttype = "";
byte[] imagedata = null;
Integer destId = 0;
String description = "";
String filename = "";
String idstr = request.getParameter("id");
if (idstr != null) {
try {
destId = Integer.parseInt(idstr);
} catch (NumberFormatException e)
{
logger.warn("Could not parse ID from string: {}", idstr);
destId = null;
}
}
for (Object ti : upload.parseRequest(request)) {
if (ti instanceof FileItem) {
FileItem fi = (FileItem) ti;
if (fi.getFieldName().equals("id") && !fi.getString().isEmpty()) {
logger.debug("Parsing int {}", fi.getString());
destId = Integer.parseInt(fi.getString());
} else if (fi.getFieldName().equals("description")) {
description = fi.getString();
} else if (fi.getFieldName().equals("file") || fi.getFieldName().equals("Filedata")) {
imagedata = fi.get();
filename = fi.getName();
contenttype = fi.getContentType();
}
}
}
String type = request.getParameter("type");
if (type.equals("userimage")) {
logger.debug("Uploading userimage for user {}");
UserImage userimage = userbean.uploadImage(userbean.findByEventUserId(destId), contenttype, imagedata, filename, description);
utilbean.convertImage(userimage.getUser());
} else if (type.equals("mapimage")) {
eventmapbean.sendImage(destId, imagedata);
} else {
retmsg = "FATAL: servlet type not defined!!";
}
} catch (FileUploadException e) {
logger.warn("Error uploading image", e);
retmsg = "Tiedoston tallennuksessa tapahtui virhe!";
} catch (EJBException e) {
logger.warn("Error uploading image", e);
retmsg = "Tiedoston tallennuksessa tapahtui virhe!";
}
PrintWriter writer = response.getWriter();
writer.append(retmsg);
}
}