我有一个表格:
<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:由于未提供多部分配置,无法处理部分
我想很好地处理一些情况,当没有提供某些参数时,该怎么做?在 IllegalStateException 上捕获并什么都不做对我来说不是好方法 - 如果没有参数,我想向用户询问文件而不是用“错误/警告”词来吓唬他。
最佳答案
这是自己寻找答案的好方法 - 只需向其他人提问 :)
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?但这是不同的故事:)
关于java - HttpServletRequest 不返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032878/