diff options
author | Jan Bartel | 2012-03-21 22:59:57 +0000 |
---|---|---|
committer | Jan Bartel | 2012-03-21 22:59:57 +0000 |
commit | 0f9a898c1c563ede10a5c2cf05bcb27ec3795658 (patch) | |
tree | 2e4c2fcb6d67b5cffc87832fdabb5badd2ae017b | |
parent | 48982ced4af5977790dcaa366926b99676f0a76b (diff) | |
download | org.eclipse.jetty.project-0f9a898c1c563ede10a5c2cf05bcb27ec3795658.tar.gz org.eclipse.jetty.project-0f9a898c1c563ede10a5c2cf05bcb27ec3795658.tar.xz org.eclipse.jetty.project-0f9a898c1c563ede10a5c2cf05bcb27ec3795658.zip |
349110 MultiPartFilter records the content-type in request params
-rw-r--r-- | jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java | 6 | ||||
-rw-r--r-- | jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java | 17 |
2 files changed, 20 insertions, 3 deletions
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java index d58811f9a2..70dcc7b810 100644 --- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java +++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java @@ -159,7 +159,11 @@ public class MultiPartFilter implements Filter { request.setAttribute(mp.getName(),mp.getFile()); if (mp.getContentDispositionFilename() != null) + { params.add(mp.getName(), mp.getContentDispositionFilename()); + if (mp.getContentType() != null) + params.add(mp.getName()+CONTENT_TYPE_SUFFIX, mp.getContentType()); + } if (_deleteFiles) { mp.getFile().deleteOnExit(); @@ -178,6 +182,8 @@ public class MultiPartFilter implements Filter ByteArrayOutputStream bytes = new ByteArrayOutputStream(); IO.copy(p.getInputStream(), bytes); params.add(p.getName(), bytes.toByteArray()); + if (p.getContentType() != null) + params.add(p.getName()+CONTENT_TYPE_SUFFIX, p.getContentType()); } } } diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java index 97d948a97d..fad0306325 100644 --- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java +++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java @@ -47,7 +47,19 @@ public class MultipartFilterTest private ServletTester tester; - + public static class TestServlet extends DumpServlet + { + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException + { + assertNotNull(req.getParameter("fileup")); + assertNotNull(req.getParameter("fileup"+MultiPartFilter.CONTENT_TYPE_SUFFIX)); + assertEquals(req.getParameter("fileup"+MultiPartFilter.CONTENT_TYPE_SUFFIX), "application/octet-stream"); + super.doPost(req, resp); + } + + } @@ -63,7 +75,7 @@ public class MultipartFilterTest tester=new ServletTester(); tester.setContextPath("/context"); tester.setResourceBase(_dir.getCanonicalPath()); - tester.addServlet(DumpServlet.class, "/"); + tester.addServlet(TestServlet.class, "/"); tester.setAttribute("javax.servlet.context.tempdir", _dir); FilterHolder multipartFilter = tester.addFilter(MultiPartFilter.class,"/*", EnumSet.of(DispatcherType.REQUEST)); multipartFilter.setInitParameter("deleteFiles", "true"); @@ -253,7 +265,6 @@ public class MultipartFilterTest protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { assertEquals("How now brown cow.", req.getParameterMap().get("strupContent-Type:")); - super.doPost(req, resp); } |