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

Spring中MultipartFormData请求如何同时传递Header参数与文件?

问题解决步骤

1. 修正代码中的笔误

你的代码存在两处明显错误,可能引发异常干扰参数解析:

  • 日志语句多了一个右括号:
    // 错误写法
    log.info(token + cvFile.getOriginalFilename()));
    // 修正后
    log.info(token + cvFile.getOriginalFilename());
    
  • 调用curriculumService.addCurriculum时传入了未定义的变量pdfFile,需改为cvFile:
    return curriculumService.addCurriculum(token, cvFile);
    

2. 保留MediaType.MULTIPART_FORM_DATA_VALUE,排查Header缺失原因

MULTIPART_FORM_DATA_VALUE是文件上传的标准MediaType,问题出在请求头的token未正确传递,而非MediaType本身:

  • 确认请求客户端(前端/Postman等)确实在请求头区域添加了token字段,不要将token放在form-data参数里。
  • 检查项目中的拦截器、过滤器(比如Spring Security),确认是否过滤或修改了请求头中的token字段,确保该Header能被接口方法获取。
  • 可临时将@RequestHeader的required设为false,测试是否能拿到值,逐步排查:
    public ResponseEntity<?> uploadCV(@RequestHeader(value = "token", required = false) String token,
                                      @RequestParam("file") MultipartFile cvFile) throws Exception {
        log.info("token: {}, filename: {}", token, cvFile.getOriginalFilename());
        return curriculumService.addCurriculum(token, cvFile);
    }
    

3. 禁止使用MediaType.MULTIPART_MIXED_VALUE处理文件上传

MULTIPART_MIXED适用于混合多种媒体类型的请求(如包含文本和附件的邮件内容),并非文件上传的标准类型。客户端使用该类型时通常不会自动生成正确的boundary分隔符,从而触发no multipart boundary was found错误,文件上传场景请坚持使用MULTIPART_FORM_DATA_VALUE。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:40:28