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<String, MultipartFile> 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在对输出流进行处理