使用Spring的MultipartResolver
来处理前端通过FormData上传的文件:
- 创建CommonsMultipartResolver对象:
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
在上述示例中,使用了Apache Commons FileUpload库来实现MultipartResolver
接口。创建CommonsMultipartResolver
对象时,需要传入ServletContext
对象作为构造参数。
- 判断请求是否包含文件:
if (commonsMultipartResolver.isMultipart(request)) {
// ...
}
isMultipart
方法用于判断请求是否包含文件。如果包含文件,就进入下一步处理。
- 获取MultipartHttpServletRequest对象并遍历文件:
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> fileNames = multiRequest.getFileNames();
while (fileNames.hasNext()) {
String instId = fileNames.next();
List<MultipartFile> files = multiRequest.getFiles(instId);
// 处理上传的文件
// ...
}
- 同时还可解析FromData传递的其余参数
String name = multiRequest.getParameter("name");
MultipartHttpServletRequest
是HttpServletRequest
的子接口,它提供了一些方法来操作上传的文件。通过强制转换HttpServletRequest
,可以获取到MultipartHttpServletRequest
对象,并使用getFiles
方法获取指定字段名的所有上传文件。在上述示例中,使用Iterator
遍历所有上传的文件,并进行相应的处理。