ios h5上传-qq浏览器-报错:MultipartHttpServletRequest are in unnamed module of loader 'app')

ios 使用h5在qq浏览器上上传时报错:
class org.apache.shiro.web.servlet.ShiroHttpServletRequest cannot be cast to class org.springframework.web.multipart.MultipartHttpServletRequest (org.apache.shiro.web.servlet.ShiroHttpServletRequest and org.springframework.web.multipart.MultipartHttpServletRequest are in unnamed module of loader 'app')
经过排查是因为"Content-Type"未自动设置为multipart/form-data; boundary=-WebKitFormBoundaryc7sJqt9sAQarzla9
手动添加后报错Cannot invoke "org.springframework.web.multipart.MultipartFile.getOriginalFilename()" because "mf" is null

前端代码

import axios from 'axios'
import store from '../store'

// 配置项
const service = axios.create({
    // baseURL:'https://www.sunfengke.xyz/pc/',
    baseURL:'http://172.168.0.206:9500/qydw-web/',
    timeout: 300000,                                     // 请求超时
})

// 请求拦截器
service.interceptors.request.use((config: any) => {
    config.headers.Token = store.state.token
    if (config.url=="/cmm/web/upload"){
        config.headers={
            Accept: "application/json, text/plain, */*",
            Token: store.state.token,
           "Content-Type":"multipart/form-data; boundary=----WebKitFormBoundaryc7sJqt9sAQarzla9"
        }
    }
    return config
}, err => {
    return Promise.reject(err)
})
export function get(url: string, params: any){
    return new Promise((response, reject) => {
        service({url, method: 'get', params}).then(res => {
            response(res)
        }).catch(err => {
            reject(err)
        })
    })
}

后台:

@RestController
@RequestMapping("/cmm/web")
@Slf4j
@Api(tags="通用接口")
public class CmmWebController {
    /**
     * 文件上传
     * @return
     */
    @PostMapping(value = "/upload")
    @ApiOperation(value = "文件上传", notes="文件上传通用接口")
    @ApiParam(name="request", value = "请求信息")
    public Result<?> fileUpload(HttpServletRequest request) {
//        @RequestPart(value = "file") MultipartFile file,
        Result<Map<String, String>> result = new Result<Map<String, String>>();
        Map<String, String> fileNameMap = new HashMap<>();
        try {


            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            // 获取上传文件对象
            MultipartFile mf = multipartRequest.getFile("file");
//            file;
            // multipartRequest.getFile("file");
            // 获取原始文件名
            String fileNameReal = mf.getOriginalFilename();
            // 文件后缀
            String suffix = fileNameReal.substring(fileNameReal.lastIndexOf("."));
            // 获取文件名
            String fileName = UUID.randomUUID().toString().replaceAll("-", "") + suffix;
            // 存储文件
            MinioUtil.putFileTemp(FileConstant.MINIO_BUCKET_TEMP, fileName, mf.getInputStream());
//            MinioUtil
            String fileUrl=MinioUtil.getFileUrl(FileConstant.MINIO_BUCKET_TEMP, fileName);
//            result.setSuccess(true);
            result.success("上传成功");
            fileNameMap.put("fileName", fileName);
            fileNameMap.put("fileNameReal", fileNameReal);
            fileNameMap.put("fileUrl",fileUrl.replace("http://172.18.231.250:9000/","https://www.sunfengke.xyz/minio/"));
            result.setResult(fileNameMap);
        } catch (Exception e) {
            result.setSuccess(false);
            result.setMessage(e.getMessage());
            log.error(e.getMessage(), e);
        } finally {
        }
        return result;
    }

boundary=----WebKitFormBoundaryc7sJqt9sAQarzla9
这个东西不是请求头里的吧

是的,是浏览器自动生成的,但是用ios的时候没有自动生成,所以报错了