我正在尝试创建一个基于 servlet 的表单,该表单允许用户将多个文件提交到后端服务器。
该表单由几个文件选择器组成。
表单从一个 servlet 以 text/html 形式打印到输出流。(很多页面取决于用户是否登录等)
在浏览器中,html 如下所示:
<form action="https://localhost:8441/uploadtest" method="post" enctype="multipart/form-data" >
当我选择一个或多个文件并单击提交按钮时,请求被转发到正确的链接,但是我的文件上传处理程序无法处理数据,因为 request.getContentType() 为空。
我使用嵌入式 jetty 9 服务器来托管 servlet。servlet api 版本是 3.0。处理程序抛出一个异常,指示内容类型为 null,我为调试添加的打印语句的输出也证实了这一点。
我已经搜索和寻找问题几个小时了,我无法弄清楚为什么内容类型设置为 null,即使表单提交了一个带有 enctype 作为 multipart/form-data 的 POST 请求。
处理程序代码是这样的:
@Override
public void doHandle(String target, Request baseRequest, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
String contentType = request.getContentType();
System.out.println(contentType);
if (contentType != null && contentType.startsWith("multipart/form-data")) {
baseRequest.setAttribute(Request.__MULTIPART_CONFIG_ELEMENT, MULTI_PART_CONFIG);
}
//processing here.