1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.jboss.as.quickstart.xml.upload;
18
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.util.Collection;
22 import java.util.logging.Logger;
23
24 import javax.inject.Inject;
25 import javax.servlet.RequestDispatcher;
26 import javax.servlet.ServletException;
27 import javax.servlet.annotation.MultipartConfig;
28 import javax.servlet.annotation.WebServlet;
29 import javax.servlet.http.HttpServlet;
30 import javax.servlet.http.HttpServletRequest;
31 import javax.servlet.http.HttpServletResponse;
32 import javax.servlet.http.Part;
33
34
35
36
37
38
39
40
41
42
43
44 @WebServlet(urlPatterns = { "/upload" })
45
46 @MultipartConfig(maxFileSize = 1048576L)
47 public class FileUploadServlet extends HttpServlet {
48
49
50
51
52 private static final long serialVersionUID = 127759768859064589L;
53
54 private static final Logger logger = Logger.getLogger(FileUploadServlet.class.getName());
55
56
57 public static final String INPUT_NAME = "file";
58
59 @Inject
60 private FileUploadBean fileUploadBean;
61
62
63 @Override
64 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
65
66
67
68
69
70 final String reqContentType = req.getContentType();
71
72 if (!reqContentType.contains("multipart/form-data")) {
73 logger.severe("Received request which is not mulipart: " + reqContentType);
74 resp.sendError(406, "Received request which is not mulipart: " + reqContentType);
75 return;
76 }
77
78
79
80
81
82 Collection<Part> fileParts = req.getParts();
83 if (fileParts != null && fileParts.size() > 0) {
84 for (Part p : fileParts) {
85 String partContentType = p.getContentType();
86 String partName = p.getName();
87 if (partContentType != null && partContentType.equals("text/xml") && partName != null
88 && partName.equals(INPUT_NAME)) {
89
90 InputStream is = p.getInputStream();
91 fileUploadBean.parseUpload(is);
92 break;
93 }
94 }
95
96 }
97
98
99
100 RequestDispatcher rd = getServletContext().getRequestDispatcher("/");
101
102 if (rd != null) {
103
104
105
106 rd.forward(req, resp);
107 return;
108 } else {
109
110 throw new IllegalStateException("Container is not well!");
111 }
112
113 }
114 }