Spring Controller无法通过RequestBody或RequestParam接收文件

时间:2019-09-12 13:30:47

标签: java spring controller postman

我正在尝试上传文件(任何类型),但是我在服务器端(Spring控制器)或客户端(邮递员)上做错了。

控制器(尝试两种方法):

@RestController
@RequestMapping("/group")
public class GroupController {

    @PostMapping(value = "/test1", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String testUpload1(@RequestBody MultipartFile file) {

        return null;
    }

    @RequestMapping(value = "/test2", method = RequestMethod.POST)
    public String testUpload2(@RequestParam(name = "file", required = true) MultipartFile multipartFile) {

        return null;
    }
}

上传者: postman

2 个答案:

答案 0 :(得分:0)

您可以尝试以下代码。

@PostMapping(value = "/test1", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = MediaType.TEXT_PLAIN_VALUE)
    public String testUpload1(@RequestParam("file") MultipartFile uploadedFile) {

      System.out.println("Uploaded File Name = " + uploadedFile.getOriginalFilename());
      File file = new File("E:/sure-delete/" + uploadedFile.getOriginalFilename());

    //Upload functionality
      try {
        uploadedFile.transferTo(file);
      } catch (IOException e) {
        e.printStackTrace();
      }
        return ResponseEntity.ok("File uploaded successfully ...");
    }

找到屏幕截图 enter image description here

答案 1 :(得分:0)

问题与Spring没有MultipartResolver bean有关。您的邮递员设置看起来不错。

如果未定义bean,则会出现以下错误:

[o.s.w.m.s.MissingServletRequestPartException: Required request part 'file' is not present]

您需要做的是用XML定义CommonsMultipartResolver bean:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- e.g.: 1 MB max upload size -->
    <property name="maxUploadSize" value="1048576"/>
</bean>

或者在Java中完成

@Bean
public MultipartResolver multipartResolver() {
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setMaxUploadSize(1048576);
    return resolver;
}