我正在尝试将文件从客户端上传到我的应用程序。
这是我控制器的方法:
@RequestMapping(value = "/Upload", method = RequestMethod.POST, consumes = { MediaType.IMAGE_JPEG_VALUE,
MediaType.IMAGE_PNG_VALUE, MediaType.IMAGE_GIF_VALUE })
public ResponseEntity saveFile(HttpServletRequest httpServletRequest, @RequestBody MultipartFile file) {
...
}
但是当我尝试上传具有正确扩展名的图像时,我得到415 HTTP代码:不支持的支持类型。
即使我删除了“ consumes”属性,然后重试,该文件也已成功上传。
我已经检查了content-type
等于image/png
。
编辑:: 邮递员屏幕:
答案 0 :(得分:0)
我认为必须使用MediaType.MULTIPART_FORM_DATA。内容类型只是请求标头,而上传并没有在标头中设置文件扩展名。
如果您需要检查内容,可以使用apache Tika
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.18</version>
</dependency>
Tika tika = new Tika();
String contentType = tika.detect(someInputStreamHere);
然后,您可以检查是否允许从实字节提取的内容类型。