当前位置: 首页 > 知识库问答 >
问题:

不支持来自多部分文件api的媒体类型

贺轶
2023-03-14

它总是给出415不支持的媒体类型错误从邮递员。Header包含带有边界的多部分/表单数据,如下所示CURL调用中所示。还尝试用RequestBody替换RequestPart但没有成功。

当使用FilePart时,我们是否需要以不同的方式调用Spring5中的多部分文件上传API?

 @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public void uploads(@RequestPart("filePart") Flux<Part> fileparts) {

     ....

}
curl -X POST \
  http://localhost:8080/upload \
  -H 'accept: application/json' \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -H 'postman-token: 2e850843-13d0-32d3-8734-227242da3303' \
  -F filePart=@abc.txt
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'text/plain' not supported",

然而,将uploads参数从@requestpart(“filepart”)flux fileparts 更改为@requestparam(“file”)MultipartFile文件是有效的。

我们不能对RequestPart使用相同的curl调用吗?

共有1个答案

王俊楚
2023-03-14

问题是由于pom.xml同时添加了spring-webmvc和spring-webflux作为依赖项。似乎不能同时启用spring-webmvcspring-webflus

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring.boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>
 类似资料:
  • 我想在一个post请求中发送一个文件和一个json模型。 我的请求映射如下所示: 我收到的错误: 邮递员要求:http://imgshare.free.fr/uploads/62f4cbf671.jpg 我的网络配置:

  • 我在使用Spring的reactive框架处理文件上传时遇到了一些问题。我想我正在跟踪文档,但无法摆脱/问题。 似乎Spring在将这些转换为时遇到了问题..?我卡住了--任何帮助都是可取的!

  • 我有两个API:s,端口8080上的CarRental API和端口8081上的CarRental CRUD。 CarRade-CRUD使用JpaRepository访问h2内存DB。 我想使用CarRental API,使用webclient向CarRental CRUD发出请求。 在CarRental CRUD中,我可以使用此服务发出post请求并将车辆添加到db中: 然后在控制器中: 我试图

  • 问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道

  • 我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。

  • 我正在用Spring Boot构建一些API,但是当我试图用Postman查询时,我得到了一些关于Content-Type的错误。 我不明白哪里出了问题。 我注意到错误消失时,我删除了@刚体作为参数的方法。为什么啊? 我只想: 将XML发送到API