Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Bartel2012-03-21 22:59:57 +0000
committerJan Bartel2012-03-21 22:59:57 +0000
commit0f9a898c1c563ede10a5c2cf05bcb27ec3795658 (patch)
tree2e4c2fcb6d67b5cffc87832fdabb5badd2ae017b
parent48982ced4af5977790dcaa366926b99676f0a76b (diff)
downloadorg.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.java6
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java17
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);
}

Back to the top