HttpMethod.PUT 上的 400 BAD 请求错误 - 第二次上传文件

400 BAD Request error on HttpMethod.PUT - File upload second time

我在上传 zip 文件的控制器中有一个 PUT 请求方法,该方法将其作为输入流并处理流。它适用于 Kb 的文件大小。现在我上传了一个 10Mb 大小的 zip 文件,第一次就可以正常工作。第二次,它没有上传,我收到 BAD 请求错误。当我重新启动该服务时,它第一次工作正常,第二次我收到相同的 BAD Request 400 错误。请指教

@RequestMapping(path = “/upload/{fileName}”, method = PUT,
    consumes = "multipart/form-data", produces = "application/json; charset=UTF-8")

 public void upload(@PathVariable(“fileName”) String fileName,
            @RequestBody MultipartFile[] multipartFile) throws IOException{ 

        //inputstream is processed here

    }

要在 spring 引导中上传文件,我更喜欢这种方法:

@RequestMapping(value = "/upload", method = RequestMethod.PUT) // Or POST
@ResponseStatus(HttpStatus.OK)
public void upload(@RequestParam("file") MultipartFile file) {

    System.out.println(String.format("File name %s", file.getName()));
    System.out.println(String.format("File original name %s", file.getOriginalFilename()));
    System.out.println(String.format("File size %s", file.getSize()));

    //do whatever you want with the MultipartFile
    file.getInputStream();
}

在 Spring 引导中配置分段文件上传

最常用的属性是:

  1. spring.http.multipart.file-size-threshold: 文件写入磁盘的阈值。支持以 MB 或 KB 作为后缀来表示以兆字节或千字节为单位的大小

  2. spring.http.multipart.location:临时文件的位置

  3. spring.http.multipart.max-file-size: 上传支持的每个文件的最大大小;还支持 MB 或 KB 后缀; 默认1MB

  4. spring.http.multipart.max-request-size:整个请求的最大大小;也支持MB或KB后缀

您当然可以在 yml 的 application.properties 中更改这些配置。

在你的情况下,我希望你去休息 api 然后检查堆栈错误以查看确切的错误是什么。