You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Karate测试PDF文件上传时遭遇415不支持媒体类型错误

解决Karate测试PDF上传时的415 Unsupported Media Type错误

我尝试用Karate框架测试PDF文件上传功能,却碰到了415 Unsupported Media Type错误。

后端接口代码

@Controller
@RequestMapping("/files")
public class UploadController {
    @PostMapping
    public @RequestMapping(
            value = "/upload",
            produces = {"application/json", "application/problem+json", "application/pdf"},
            consumes = {"multipart/form-data"}
    )
    String upload(@RequestParam("myFile") MultipartFile file) throws Exception {
        return "Success";
    }
}

Karate测试代码

Scenario: Upload a pdf file
    Given path '/files/upload'
    And header Accept = 'application/pdf'
    And multipart file myFile = { read: 'test.pdf',fileName: 'test.pdf', contentType: 'application/pdf'  }
    When method post
    Then status 200

错误信息

status code was: 415, expected: 200, response time in milliseconds: 5, url: http://localhost:61761/files/upload, response: 
{"title":"Unsupported Media Type","status":415,"detail":"Content-Type 'application/json;boundary=22459011c7e35efa' is not supported"}

问题原因及解决方案

核心问题:Spring注解使用错误

后端代码中同时混用@PostMapping和@RequestMapping注解,导致接口的consumes配置(要求multipart/form-data)未被正确识别,后端无法解析multipart类型请求,从而返回415错误。

修正后的后端代码

将@RequestMapping的属性合并到@PostMapping中,规范注解使用:

@Controller
@RequestMapping("/files")
public class UploadController {
    @PostMapping(
            value = "/upload",
            produces = {"application/json", "application/problem+json", "application/pdf"},
            consumes = {"multipart/form-data"}
    )
    public String upload(@RequestParam("myFile") MultipartFile file) throws Exception {
        return "Success";
    }
}

额外注意点

  • 确保Karate测试中的PDF文件路径正确,若文件在classpath下,建议写成read: 'classpath:test.pdf'
  • 后端返回字符串"Success",但测试中设置Accept = 'application/pdf'可能导致内容类型不匹配,可将Accept改为application/json或调整后端返回类型以适配需求

内容的提问来源于stack exchange,提问作者user3687406

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 20:26:13