随笔
multipart
格式的数据 会将 一个表单拆分为 多个部分,每个部分对应一个输入域。在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是二进制。
配置 multipart 解析器:
有两个:
CommonsMultipartResolver
:使用 Jakarta Commons FileUpload 解析 multiparty。StandardServletMultipartResolver
:依赖于 Servlet 3.0 对 multipart 请求的支持。
配置 StandardServletMultipartResolver 解析器
- 在ApplicationContext 中声明为 bean:
@Bean
public MultipartResolver multipartResolver(){
return new StandardServletMultipartResolver();
}
- 在 web.xml 或 Servlet 初始化类中,配置 multipart 的具体细节,如:文件大写,临时文件路径等。
- 如果已经实现了 WebApplicationInitializer 接口,可以在Servlet registration 上调用
setMultipartConfig()
方法进行配置:
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
DispatcherServlet dispatcherServlet = new DispatcherServlet();
ServletRegistration.Dynamic registration = servletContext.addServlet("appServlet", dispatcherServlet);
registration.addMapping("/");
registration.setMultipartConfig(new MultipartConfigElement("/tmp/uploads"));
}
- 若 初始化 类 继承了
AbstractAnnotationConfigDispatcherServletInitializer
或AbstractDispatcherServletInitializer
通过重写customizeRegistration
方法 来配置multipart
的具体细节
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setMultipartConfig(