当前位置:   article > 正文

springBoot使用CommonsMultipartFile工具上传文件遇到报错_commonsmultipartfile 传输中断

commonsmultipartfile 传输中断

springBoot使用CommonsMultipartFile工具上传文件遇到报错

原文:https://blog.csdn.net/Dawn____Dawn/article/details/104009433

场景:

旧的springMVC项目中使用CommonsMultipartFile类型来接收上传的文件,现在进行迁移,框架使用springboot2.0+ ,始终无法接收请求。

原因:

  1. Spring Boot默认使用StandardServletMultipartResolver处理Multipart。
    对应的使用StandardMultipartFile来接收文件数据。
  2. 如果希望用CommonsMultipartFile来接收文件数据,
    在没有配置multipartResolver为 CommonsMultipartResolver,
    使用CommonsMultipartResolver来处理Multipart,将会报错。

解决:

Multipart配置类:

  1. package com.example.hellospringboot.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.web.multipart.commons.CommonsMultipartResolver;
  5. @Configuration
  6. public class MultipartConfig {
  7. @Bean(name = "multipartResolver")
  8. public CommonsMultipartResolver getCommonsMultipartResolver() {
  9. CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
  10. multipartResolver.setMaxUploadSize(20971520);
  11. multipartResolver.setMaxInMemorySize(1048576);
  12. return multipartResolver;
  13. }
  14. }

关闭Spring Boot的Multipart自动配置,否则通过CommonsMultipartFile依然无法接收到文件。
@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})

  1. package com.example.hellospringboot;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration;
  5. import org.springframework.context.annotation.ComponentScan;
  6. import org.springframework.context.annotation.Configuration;
  7. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  8. @EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
  9. @Configuration
  10. @ComponentScan
  11. @EnableSwagger2
  12. public class HellospringbootApplication {
  13. public static void main(String[] args) {
  14. SpringApplication.run(HellospringbootApplication.class, args);
  15. }
  16. }
  •  

测试:

maven配置(文件上传相关依赖):

  1. <!--文件上传:commons-fileupload中包含了commons-io-->
  2. <dependency>
  3. <groupId>commons-fileupload</groupId>
  4. <artifactId>commons-fileupload</artifactId>
  5. <version>1.4</version>
  6. </dependency>

在页面上上传文件并在本地对应位置能找到上传的文件即配置成功。

  1. package com.example.hellospringboot.controller;
  2. import io.swagger.annotations.Api;
  3. import io.swagger.annotations.ApiOperation;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RequestMethod;
  6. import org.springframework.web.bind.annotation.RequestParam;
  7. import org.springframework.web.bind.annotation.RestController;
  8. import org.springframework.web.multipart.MultipartFile;
  9. import java.io.File;
  10. import java.io.IOException;
  11. @RestController
  12. @RequestMapping("/test")
  13. @Api(value = "前端控制器")
  14. public class TestController {
  15. @RequestMapping(value = "/upload", method = RequestMethod.POST)
  16. @ApiOperation(value = "文件上传", notes = "文件上传")
  17. public String upload(@RequestParam(value="file", required = false) MultipartFile file){
  18. //该路径写死了,需要修改
  19. File file2 = new File("F:\\a.txt");
  20. try {
  21. file.transferTo(file2);
  22. } catch (IOException e) {
  23. e.printStackTrace();
  24. }
  25. return "";
  26. }
  27. }

项目目录:
在这里插入图片描述

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/895671
推荐阅读
相关标签
  

闽ICP备14008679号