如何将此分段文件上传迁移到 Spring Boot 2.4?
How to migrate this mutlipart file upload to Spring Boot 2.4?
使用 Spring Boot 2.3 我使用了以下 Kotlin 代码
val mvcResultImage = this.mockMvc!!.perform(MockMvcRequestBuilders.multipart("/somepath)
.file("files[]", imageFile.getBytes())
.characterEncoding("UTF-8"))
.andReturn()
在具有功能的控制器的集成测试中
@PostMapping(path = ["/somepath"],
consumes = [MediaType.MULTIPART_FORM_DATA_VALUE],
produces = [MediaType.APPLICATION_JSON_VALUE])
@ResponseBody
fun createFromBytes(@RequestParam("files[]") file: MultipartFile): ResponseEntity<Any> {
...
}
在 2.3 中,我能够在控制器函数中处理请求,而在 2.4 中,控制器函数引发 org.springframework.web.multipart.support.MissingServletRequestPartException
消息 Required request part 'files[]' is not present
并导致 HTTP 响应代码 400。
我在迁移指南和已处理问题列表中找不到任何关于此版本更改的内容。
在控制器和请求中重命名为 file
没有帮助,我不记得为什么我在使用 2.3 的代码中添加 []
,但我认为有必要让它发挥作用。
我正在使用 Spring 通过 spring-boot-starter-parent:2.4.1
的 Maven 父机制引导。
这是来自 Spring 的 a known issues in Spring Boot。它已在 Spring Boot 2.4.2 中修复。链接的问题包含一个成功测试的解决方法,以防您遇到 2.4.1 问题:Create MockMultipartFile
with MockMultipartFile( String name, @Nullable String originalFilename, @Nullable String contentType, @Nullable byte[] content)
(originalFilename
的规范很重要)。
使用 Spring Boot 2.3 我使用了以下 Kotlin 代码
val mvcResultImage = this.mockMvc!!.perform(MockMvcRequestBuilders.multipart("/somepath)
.file("files[]", imageFile.getBytes())
.characterEncoding("UTF-8"))
.andReturn()
在具有功能的控制器的集成测试中
@PostMapping(path = ["/somepath"],
consumes = [MediaType.MULTIPART_FORM_DATA_VALUE],
produces = [MediaType.APPLICATION_JSON_VALUE])
@ResponseBody
fun createFromBytes(@RequestParam("files[]") file: MultipartFile): ResponseEntity<Any> {
...
}
在 2.3 中,我能够在控制器函数中处理请求,而在 2.4 中,控制器函数引发 org.springframework.web.multipart.support.MissingServletRequestPartException
消息 Required request part 'files[]' is not present
并导致 HTTP 响应代码 400。
我在迁移指南和已处理问题列表中找不到任何关于此版本更改的内容。
在控制器和请求中重命名为 file
没有帮助,我不记得为什么我在使用 2.3 的代码中添加 []
,但我认为有必要让它发挥作用。
我正在使用 Spring 通过 spring-boot-starter-parent:2.4.1
的 Maven 父机制引导。
这是来自 Spring 的 a known issues in Spring Boot。它已在 Spring Boot 2.4.2 中修复。链接的问题包含一个成功测试的解决方法,以防您遇到 2.4.1 问题:Create MockMultipartFile
with MockMultipartFile( String name, @Nullable String originalFilename, @Nullable String contentType, @Nullable byte[] content)
(originalFilename
的规范很重要)。