【发布时间】:2017-06-01 06:20:14
【问题描述】:
我正在使用 Jsps/Servlets 来允许用户上传图片(如此处所述:How to upload files to server using JSP/Servlet?)
通常一切正常(我在相应的 servlet 上有 MultipartConfig 注释)。
我遇到了一个案例,在尝试从 HttpServletRequest 检索零件时抛出了 NullPointerException:request.getPart()。
根据文档,当request 不包含“请求的部分”(http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getPart(java.lang.String)) 时会发生这种情况。
因此,我可以重新创建此问题的唯一方法是操作 html(通过我的浏览器的 html 编辑工具)并手动删除文件 input 元素的 name 属性(即:将 name 更改为空字符串)。
我发现这不太可能是用户导致异常抛出的原因。是否有任何其他原因导致此错误发生?我想弄清楚是什么原因。
谢谢。
更新
相关html:(使用引导折叠显示文件input元素)
(数据属性适用于 javascript - 引号中的某些内容可能与 name 属性混淆?)
<form role="form" action="/fileUploadServlet" method="post"
enctype="multipart/form-data"
data-min-length='${minLength}'
data-max-length='${maxLength}'
data-msg="${valMsg}"
data-size="${maxSize}">
<a href="#input_collapse" class="btn btn-default" data-toggle="collapse">
Upload File
</a>
<span class="collapse" id="input_collapse">
<input type="file" name="someFile" id="some_file">
</span>
...[other form fields]
</form>
相关的Servlet代码:(调用getSubmittedFileName()会抛出NPE)
@MultipartConfig(maxFileSize = 1024*1024*5)
public class FileUploadServlet
{
...
try {
Part filePart = req.getPart("someFile");
...filePart.getSubmittedFileName();
【问题讨论】:
-
你的代码在哪里?您是否希望我们拥有一个水晶球,或者某种神奇的感觉,能够在没有它的情况下“调试”您的代码?
-
在问题中添加了代码。
-
在哪种情况下会出现问题,您能否将问题详细信息与您的 servlet 代码一起发布?
-
您好,问题发生在用户提交表单时。上面的 servlet 代码是检查的第一件事,它会抛出
NPE(意味着输入的其余字段不相关)...谢谢。
标签: forms jsp servlets file-upload multipartform-data