11package ru .javaops .masterjava .upload ;
22
3- import org .apache .commons .fileupload .FileItemIterator ;
4- import org .apache .commons .fileupload .FileItemStream ;
5- import org .apache .commons .fileupload .servlet .ServletFileUpload ;
63import org .thymeleaf .context .WebContext ;
74import ru .javaops .masterjava .model .User ;
85
96import javax .servlet .ServletException ;
7+ import javax .servlet .annotation .MultipartConfig ;
108import javax .servlet .annotation .WebServlet ;
119import javax .servlet .http .HttpServlet ;
1210import javax .servlet .http .HttpServletRequest ;
1311import javax .servlet .http .HttpServletResponse ;
12+ import javax .servlet .http .Part ;
1413import java .io .IOException ;
1514import java .io .InputStream ;
1615import java .util .List ;
1716
1817import static ru .javaops .masterjava .common .web .ThymeleafListener .engine ;
1918
20- @ WebServlet ("/" )
19+ @ WebServlet (urlPatterns = "/" , loadOnStartup = 1 )
20+ @ MultipartConfig (fileSizeThreshold = 1024 * 1024 * 10 ) //10 MB in memory limit
2121public class UploadServlet extends HttpServlet {
2222
2323 private final UserProcessor userProcessor = new UserProcessor ();
@@ -30,23 +30,18 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se
3030
3131 @ Override
3232 protected void doPost (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
33- final ServletFileUpload upload = new ServletFileUpload ();
3433 final WebContext webContext = new WebContext (req , resp , req .getServletContext (), req .getLocale ());
3534
3635 try {
37- // https://commons.apache.org/proper/commons-fileupload/streaming.html
38-
39- final FileItemIterator itemIterator = upload .getItemIterator (req );
40- while (itemIterator .hasNext ()) { //expect that it's only one file
41- FileItemStream fileItemStream = itemIterator .next ();
42- if (!fileItemStream .isFormField ()) {
43- try (InputStream is = fileItemStream .openStream ()) {
44- List <User > users = userProcessor .process (is );
45- webContext .setVariable ("users" , users );
46- engine .process ("result" , webContext , resp .getWriter ());
47- }
48- break ;
49- }
36+ // http://docs.oracle.com/javaee/6/tutorial/doc/glraq.html
37+ Part filePart = req .getPart ("fileToUpload" );
38+ if (filePart .getSize () == 0 ) {
39+ throw new IllegalStateException ("Upload file have not been selected" );
40+ }
41+ try (InputStream is = filePart .getInputStream ()) {
42+ List <User > users = userProcessor .process (is );
43+ webContext .setVariable ("users" , users );
44+ engine .process ("result" , webContext , resp .getWriter ());
5045 }
5146 } catch (Exception e ) {
5247 webContext .setVariable ("exception" , e );
0 commit comments