金蝶Apusic 应用服务器9.0版本上,springboot项目关于文件上传的一个问题 项目部署在金蝶v9上使用文件上传时,请求接口获取不到参数。但是在本地启动应用是可以获取到参数,没有任何问题。 @RequestMapping("doUpload") public void doUpload(DocAttaPage page,@RequestParam(value = "file") MultipartFile file, Integer chunk,Integer chunks,HttpServletResponse response){ } 排查问题过程: 前端请求格式Content-Type: multipart/form-data,浏览器看请求也有发送参数。 后端debugger发现,能进入接口,就是没有参数。 经过不懈的调试,发现在springboot项目中默认用了StandardServletMultipartResolver来解析文件上传,而上传文件有两种方式,还有一种需要用CommonsMultipartResolver解析。 两者的区别子在于: CommonsMultipartResolver for Apache Commons FileUpload StandardServletMultipartResolver for the Servlet 3.0+ Part A 在项目中加入 @Bean(name = "multipartResolver") public MultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setDefaultEncoding("UTF-8"); return resolver; } 使用CommonsMultipartResolver就完美解决问题,无论本地,还是金蝶v9应用服务器上都可以。 分析:查看金蝶V9的目录lib中,似乎并没有发现有servlet相关的jar包,项目中也没有引入,因为Tomcat的lib中是有servlet的相关jar的。再者项目中有引入了Apache Commons FileUpload方式上传所依赖的jar包,commons-fileupload和commons-io。我猜测是金蝶V9不支持 Servlet 3.0+ Part A。 ———————————————— 原文链接:https://blog.csdn.net/u012960278/article/details/119134480
标签:Apusic,springboot,金蝶,项目,CommonsMultipartResolver,应用服务器,上传 From: https://www.cnblogs.com/xing-29391/p/17528352.html