springboot微服务上传压缩包存储到本地服务器
问题:项目使用微服务开发,通过网关路由到各个服务上,页面上传Excel文件是可以的,但是上传zip压缩包通过网关在传递给zu_user服务时报错如下:
报错1、org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.RuntimeException: java.io.IOException: UT000036: Connection terminated parsing multipart data
报错2、UT005023: Exception handling request to /gw/v1/user/zc-user/person/import 2022-07-05T11:46:01.652095092Z org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.RuntimeException: java.io.IOException: UT000036: Connection terminated parsing multipart data
问题原因:解析不了zip文件流。
解决方案:
第一步在接口参数加上 @RequestBody 注解,重启项目在执行上传操作,如果失败则执行第二步。
// 导入人员压缩包 @PostMapping("/import") public ResponseData importPerson(@RequestBody MultipartFile file) {return new ResponseData(personInfoService.importFile(file,super.getUser()));
}
第二步在zc_user 项目中application.yml增加配置,重启项目在执行上传操作,如果失败则执行第三步。
spring: servlet: multipart: max-file-size: 1GB #文件最大大小 max-request-size: 1GB #文件请求大小 location: /tmp/pimport #文件存储路径
第三步在zc_zuul 项目中application.yml增加配置。
spring: servlet: multipart: max-file-size: 1GB #文件最大大小 max-request-size: 1GB #文件请求大小 location: /tmp/pimport #文件存储路径
前端headers配置:(前端基本上配置Content-Type:multipart/form-data即可,其他都默认就行,如果不行,请参考下面配置)