springMvc同时上传文件和json

springMvc上传文件的时候,我查找的资料都是上传单个文件,在url中传参
但是实际项目中使用最多的是json传参

springMvc的设计不允许同时使用requestbody requestparam这两个注解同时使用,所以也就只有自己去解析
上传文件时,是springMvc会将请求封装成StandardMultipartHttpServletRequest,也就是只要判断请求是否是这个StandardMultipartHttpServletRequest的实例就能判断是否含有文件

public void test(HttpServletRequest request)
    InputStream file = null;
    InputStream json = null;
    if (request instanceof StandardMultipartHttpServletRequest) {
        MultiValueMap fileMap = ((StandardMultipartHttpServletRequest) request).getMultiFileMap();
        json = fileMap.get("json").get(0).getInputStream();
        file = fileMap.get("file").get(0).getInputStream();
    } else {
        // 直接从body中取出json
        json = request.getInputStream();
    }
    // 将输入流解析成字符串
    BufferedReader reader = new BufferedReader(new InputStreamReader(json));
    StringBuffer sb = new StringBuffer();
    String line;
    while ((line = reader.readLine()) != null) {
        sb.append(line);
    }
    logger.debug(sb.toString());
}

如果只含有json直接从输出流取然后转成字符串处理就行

如果含有文件转换成StandardMultipartHttpServletRequest在对输出流进行处理

你可能感兴趣的:(springMvc同时上传文件和json)