Spring MVC 中调用 Servlet API getPart() 获取上?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Spring MVC 中调用 Servlet API getPart() 获取上?报错

优选2 2020-06-09 11:16:41 26

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开发者工具的请求截图如下:

    希望了解的站友能说说,先谢了。

Web App开发 前端开发 Java API 开发者 Spring
分享到
取消 提交回答
全部回答(1)
  • 优选2
    2020-06-09 11:16:56

    是不是你在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)@ResponseBodypublicStringuploadBackupFile(@RequestParamMultipartFilefile){//下面只是举例StringfileName=srcFile.getOriginalFilename();FiledestFile=newFile(parent,fileName);try{FileUtils.copyInputStreamToFile(srcFile.getInputStream(),destFile);}catch(IOExceptione){}returnRETURN_STR;}



    ######谢谢您,现在是想用@SessionAttribute实现长事务,所以用@ModelAttribute方法,目的是要在session暂时存一个文件,主要是不清楚为什么这样调用ServletAPI不成功,结合那张截图,您有想法吗?
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题