文件上传

当数据以multipart/form-data的格式发送时,servlet 容器支持文件上传。

如果满足以下任何一个条件,servlet 容器提供 multipart/form-data格式数据的处理。

  • servlet处理的请求使用了第8.1.5节定义的注解@MultipartConfig
  • 为了servlet处理请求,部署描述符包含了一个 multipart-config元素。

请求中的 multipart/form-data 类型的数据如何可用,取决于servlet 容器是否提供 multipart/form-data 格式数据的处理:

  • 如果 servlet 容器提供 multipart/form-data 格式数据的处理,可通过 HttpServletRequest 中的以下方法得到:
    • public Collection getParts()
    • public Part getPart(String name) 每个 part 都可通过 Part.getInputStream 方法访问头部,相关的内容类型和内容。
      对于表单数据的 Content-Disposition,即使没有文件名,也可使用 part 的名称通过 HttpServletRequest 的 getParameter 和getParameterValues 方法得到 part 的字符串值。
  • 如果 servlet 的容器不提供 multi-part/form-data 格式数据的处理,这些数据将可通过 HttpServletReuqest.getInputStream 得到。