HttpServletRequest不返回null?

时间:2017-03-26 18:30:46

标签: java forms tomcat

我有一张表格:

<form action='?hasScenario=1' method='post' enctype='multipart/form-data'>
 <input type='file' name='file'/>
 <input type='submit' />
</form>

在我想做的tomcat 8.0中:

private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException {
    Part filePart = request.getPart("file");
    ....
}

documentation 中,如果用户没有输入任何值,我会看到我应该为null。我已经(有意)为web.xml或服务器中的多部分/文件上传配置了一些特殊的东西。但不是null我得到:      java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided

我想处理好的情况,当没有提供某些参数时,该怎么做?在IllegalStateException上捕捉并且什么都不做对我来说不是一个好方法 - 如果没有参数,我想问用户文件,而不是用“错误/警告”来吓唬他。词语的

1 个答案:

答案 0 :(得分:1)

这是一个很好的方法来自己找到答案 - 只是向别人提问:)

web.xml中的multipart-config是必须的。所以我的servlet部分目前看起来像:

<servlet>
 <description>Scenario</description>
 <servlet-name>Scenario</servlet-name>
 <servlet-class>path-to-the-servlet</servlet-class>
 <multipart-config>
  <max-file-size>3145728</max-file-size>
  <max-request-size>5242880</max-request-size>
 </multipart-config>
</servlet>
<servlet-mapping>
 <servlet-name>Scenario</servlet-name>
 <url-pattern>/scenario</url-pattern>
</servlet-mapping>

在调用getPart之前,检查是否有任何数据非常重要,例如:

if (request.getContentType() != null)
    Part filePart = request.getPart("file");
    ...

所以最后filePart为null或有效变量

我仍然无法理解他们是如何让getParameter在这篇文章中发挥作用的 How to upload files to server using JSP/Servlet?但这是不同的故事:)