在springboot中是否可以同时获取Multipart文件和RequestBody?

问题描述 投票:0回答:1

我想在 Springboot 中有一个 post 方法,它将数据发布到数据库,其中我有一个表,其中保存员工的数据,也包括简历。我想将简历作为文档,因此我在实体类上有 byte[] 。我将文档作为 Multipart/form-data 从邮递员传递,并将 requestBody 作为 JSON 数据放在原始正文部分中。但没能做到。

我从邮递员处将文档作为 Multipart/form-data 传递,并将原始正文部分中的 requestBody 作为 JSON 数据,控制器编写如下,

@PostMapping()
public ResponseEntity<EmployeeMinimalResponseDTO> postEmployee(
            @RequestPart(value = "resume") MultipartFile file,
            @RequestBody(required = false) EmployeeDTO employeeDTO) throws IOException {
     Employee employee = Converters.getEmployeeFromEmployeeDto(employeeDTO);
     employee.setResume(file.getBytes());
     return this.employeeService.postEmployee(employee);
}

导致内部服务器错误,提示“当前请求不是多部分请求”。我究竟做错了什么 ?我是否必须进行任何配置才能使其正常工作?我有 [starter web、Data JPA、mysql Connector、Lombok] 依赖项。

这是我的Application.properties,

spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=7MB

接下来是mysql配置。

但是,我有一个控制器可以单独检查分段上传,并且效果很好,

@PostMapping("check")
    public String fileUploadCheck(@RequestPart(value = "resume",required = false) MultipartFile file) throws IOException{
        Employee employee= new Employee();
        employee.setResume(file.getBytes());
        this.employeeService.postEmployee(employee);
        return "file uploaded successfullly..";
    }

高兴地返回,“文件上传成功..”我不知道为什么。谁可以帮我这个事。预先感谢:)

java spring-boot multipart
1个回答
0
投票

使用@RequestPart,这是一个例子。

save(@RequestPart(value = "file1", required = false) MultipartFile file1,
@RequestPart(value = "file2", required = false) MultipartFile file2,
@RequestPart MyDto myDto)
      

在你的前端

let formData = new FormData();
formData.append('file1', this.myForm.get('file1')?.value);
formData.append('MyDto', new Blob([JSON
      .stringify(MyModlel)], {
      type: 'application/json'
}));
© www.soinside.com 2019 - 2024. All rights reserved.