gpt4 book ai didi

java - MultipartFile#getContentType 在 Spring 集成测试期间返回 null

转载 作者:行者123 更新时间:2023-12-02 09:54:10 26 4
gpt4 key购买 nike

我有以下文件:

ImageForm.java:

public class ImageForm {
@FileNotEmpty
private MultipartFile file;
// other code ...
}

GalleryController.java:

@Controller
@RequestMapping("/admin/galleries")
public class GalleryController {
@PostMapping("/{id}/image/create")
public ModelAndView createImage(@PathVariable("id") long galleryId, @Valid ImageForm imageForm, BindingResult bindingResult, RedirectAttributes redirectAttributes) {
// other code ...
System.out.println(imageForm.getFile().getContentType()); // Prints: null
// other code ...
}
}

GalleryControllerIT.java:

@SqlGroup({
@Sql("classpath:test-schema.sql"),
@Sql("classpath:test-gallery-data.sql"),
@Sql("classpath:test-image-data.sql")
})
public class GalleryControllerIT extends SetupControllerIT {
@Test
public void createImage_POSTHttpMethod_ImageIsCreated() throws Exception {
Path path = Paths.get(getClass().getClassLoader().getResource("test-image.png").toURI());
byte[] image = Files.readAllBytes(path);

mvc.perform(
multipart("/admin/galleries/1/image/create")
.file("file", image) // TODO: ImageForm.file.contentType is null.
.with(csrf())
).andExpect(status().isFound());

assertThat(imageRepository.count(), is(5L));
}
}
  1. 在测试中GallerControllerIT#createImage_POSTHttpMethod_ImageIsCreated我设置了一个文件。
  2. 测试将文件发送到 GalleryController#createImage 并将其映射到 ImageForm#file 属性。
  3. ImageForm#file 的类型为 MultipartFile,它具有方法 getContentType
  4. 方法 MultipartFile#getContentType 返回 null

问题是,为什么 MultipartFile#getContentType 返回 null?在测试之外它可以正常工作。

最佳答案

要获取完整数据,您应该调用

.file(new MockMultipartFile("image", "some_name", MediaType.MULTIPART_FORM_DATA_VALUE, image))

因为在你的情况下,如果你调用.file("file", image),他们会调用没有内容类型的构造函数MockMultipartFile的简短版本

MockMvc 如果您没有声明它们,则尝试不创建或声明一些附加值或参数。

关于java - MultipartFile#getContentType 在 Spring 集成测试期间返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56117297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com