post表单包含一个servlet文件

时间:2011-05-18 18:44:38

标签: jsp servlets file-upload

我想发布一个有很多字段的表单,其中一个是文件,当我这样做时

<form action="MediaManagementServlet" name="addMedia" method="post" enctype="multipart/form-data">
//    many fileds
<label>upload file</label>
<input type="file" name="file" id="fileName"/>

它没有到达servlet,但是当我这样做时

<form action="MediaManagementServlet" name="addMedia" method="post" >

它到达servlet,但是当我得到文件的参数时它会打印出来的?

在哪里隐藏着我的观点?

1 个答案:

答案 0 :(得分:3)

在两种情况下都应该到达servlet。您可能没有运行您认为正在运行的代码或者错误解释结果,或者有一些JavaScript接管了提交,但没有正确对待它。保存,重建,重新部署和重新启动所有内容。对于第一种情况下的所有字段,getParameter()仅返回null,对于第二种情况,仅返回文件。

对于null参数问题,在使用multipart/form-data编码时,数据未在请求正文中作为标准application/www-form-urlencoded查询字符串发送。相反,它已在请求正文中以multipart/form-data块的形式发送。 getParameter()和consorts无法识别这一点,因此它们都返回null。您需要使用getParts()代替。

Collection<Part> parts = request.getParts();
// Loop through it and collect manually.

或者当你还在使用旧的Servlet 2.5或之前,那么你需要使用Apache Commons FileUpload来解析它。

另见: