消耗未检测到文件扩展名-REST

时间:2018-10-24 12:04:17

标签: java spring spring-mvc file-upload servlet-3.0

我正在尝试将文件从客户端上传到我的应用程序。

这是我控制器的方法:

@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

编辑::  邮递员屏幕:

enter image description here

1 个答案:

答案 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);

然后,您可以检查是否允许从实字节提取的内容类型。