我有一张表格:
<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上捕捉并且什么都不做对我来说不是一个好方法 - 如果没有参数,我想问用户文件,而不是用“错误/警告”来吓唬他。词语的
答案 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?但这是不同的故事:)