Spring MVC 中调用 Servlet API getPart() 获取上传的文件(Part对象)失败? 400 报错
先上代码:
@ModelAttribute public void getBatchFile(HttpServletRequest request, ModelMap map) throws Exception { if (request.getRequestURI().contains("confirm_import_batch")) { Part part = request.getPart("batch"); map.put("batch", new MockMultipartFile("batch", part.getInputStream())); } }
web.xml 中已经往 DispatcherServlet 对应的的 <Servlet> 标签中添加了 <MultipartConfig/> 标签,问题是 getPart() 返回的是null;
Chrome开发者工具的请求截图如下:
希望了解的站友能说说,先谢了。
是不是你在spring配置文件配置的multipartResolver的Bean是用的
org.springframework.web.multipart.commons.CommonsMultipartResolver
这个类是用的commons-fileupload进行文件上传,不走Servlet的api。
如果想用Servlet的api进行上传,这个Bean要用
org.springframework.web.multipart.support.StandardServletMultipartResolver
这样MultipartConfig才会起效果。
对于springmvc的文件上传,控制器应该这样写
@RequestMapping(value = "/backup", method = RequestMethod.POST) @ResponseBody public String uploadBackupFile(@RequestParam MultipartFile file) { //下面只是举例 String fileName = srcFile.getOriginalFilename(); File destFile = new File(parent, fileName); try { FileUtils.copyInputStreamToFile(srcFile.getInputStream(), destFile); } catch (IOException e) {} return RETURN_STR; }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。