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

Spring Boot对接Google Drive用Postman上传文件报mime type错误如何解决

错误解决方法:Invalid mime type "media": does not contain '/'

报错信息:Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Invalid mime type "media": does not contain '/']

错误原因

该错误本质是请求/代码中传递了不符合规范的MIME类型,合法MIME类型格式为类型/子类型(如image/png、application/json),当前传递的media缺少/分隔符,无法被框架识别。

解决方案

按顺序执行以下两步即可解决:

第一步:修正Postman测试配置(90%以上的问题由该原因导致)

  • 打开当前上传请求的Body标签,选择form-data格式
  • 填写key为file时,点击key输入框右侧的下拉菜单,选择File类型,不要选Text
  • 切换到Headers标签,不要手动填写Content-Type请求头,Postman会在你选择文件后自动生成带boundary参数的合法multipart/form-data请求头
  • (可选)点击form-data列表右侧的列配置按钮,调出Content-Type列,确认对应file行的Content-Type没有被手动填写为media,留空即可

第二步:代码层面增加MIME类型兜底兼容

就算客户端/测试工具传了错误的MIME类型,代码也可以做校验兜底,避免直接报错,修改你的uploadFile方法如下:

public String uploadFile(MultipartFile file) {
    try {
        if (file != null) {
            File fileMetadata = new File();
            fileMetadata.setName(file.getOriginalFilename());
            
            // 新增MIME类型校验逻辑
            String contentType = file.getContentType();
            if (contentType == null || !contentType.contains("/")) {
                // 兜底默认用二进制流类型,不影响文件上传到Google Drive
                contentType = MediaType.APPLICATION_OCTET_STREAM_VALUE;
                // 也可根据文件后缀推断正确的MIME类型,以下是简单实现示例
                String fileName = file.getOriginalFilename();
                if (fileName != null && fileName.contains(".")) {
                    String suffix = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
                    contentType = switch (suffix) {
                        case "png" -> "image/png";
                        case "jpg", "jpeg" -> "image/jpeg";
                        case "pdf" -> "application/pdf";
                        case "txt" -> "text/plain";
                        default -> contentType;
                    };
                }
            }

            File uploadFile = googleDriveManager.getInstance()
                    .files()
                    .create(fileMetadata, new InputStreamContent(
                            contentType,
                            new ByteArrayInputStream(file.getBytes()))
                    )
                    .setFields("id").execute();
            return uploadFile.getId();
        }
    } catch (Exception e) {
        System.out.print("Error: "+e);
    }
    return null;
}

内容的提问来源于stack exchange,提问作者Linet M Shaji

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:04