349110 MultiPartFilter records the content-type in request params

This commit is contained in:
Jan Bartel 2012-03-22 09:59:57 +11:00
parent 48982ced4a
commit 0f9a898c1c
2 changed files with 20 additions and 3 deletions

View File

@ -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());
}
}
}

View File

@ -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);
}