SpringBoot文件上传为null????
spider项目做完之后,又需要一个对应的CMS平台,这个平台的主要作用就是配合两个spider项目进行使用。球队对标的维护这一块需要我做一个图片上传的功能,本想这不就是个图片上传功能吗,有什么难的,没想到的是我用了差不多一天的时间解决这个问题,当然不是所有的上传都会出现这种情况,但是我不知道为什么我遇到了。
下面是java对应的代码:
@RequestMapping("/uploadTeamPic.do") public Response uploadTeamPic(HttpServletRequest request,@RequestParam(value="teamQtId")String teamQtId,@RequestParam(value="file",required=false) MultipartFile file) throws IOException { Response response = new Response(); response.setCode(CodeDict.FAILED.getCode()); if(StringUtils.isBlank(teamQtId)||null==file) { String respStr = "必要参数teamQtId或文件为空"; log.error(respStr); response.setMsg(respStr); return response; } String upLoadUrl = footballCMSUrl+"uploadTeamPic.do"; String httpRespStr = HttpClientUtil.upLoadImg(file, teamQtId,upLoadUrl); String failMsg = "文件上传失败"; if(StringUtils.isBlank(httpRespStr)) { response.setMsg(failMsg); return response; } if(httpRespStr.equals(UPLOADSUCCESS)) { response.setCode(CodeDict.SUCCESS.getCode()); response.setMsg("文件上传成功"); return response; }else { response.setMsg(failMsg); return response; } }
这里的参数MuiltiPartFile是org.springframework.web.multipart.MultipartFile类型的参数
当然我们只看入参,下面的那部分代码是调用篮球或足球项目的上传功能,这里做的是通过CMS中转一层。
下面是对应的JS代码:
//校验文件 function checkImg(){ var file = $("#teamPicImg").val(); if(!/.(gif|jpg|jpeg|png|GIF|JPG|bmp)$/.test(file)){ layer.msg("图片类型必须是.gif,jpeg,jpg,png,bmp中的一种",{icon: 2,time: 2000}); return false; }else{ if(($("#teamPicImg")[0].files[0].size.toFixed(2))>=(50*1024)){ layer.msg("请上传小于50KB的图片",{icon: 2,time: 2000}) return false; } } return true; } //上传文件 function upLoadImg(){ var imgEle = $("#teamPicImg")[0].files[0]; var teamQtId = $("input[name='qtId']").val().trim(); var formdata = new FormData(); formdata.append('file',imgEle); formdata.append('teamQtId',teamQtId); $.ajax({ url:upLoadImgUrl, type:'post', data:formdata, cache: false, processData: false, contentType: false, async: false }).done(function(res) { if(res.code==0){ layer.msg(res.msg,{icon: 1,time: 2000},function(){ var rand = Math.random(); $("#teamPic").attr("src",imgBaseUrl+teamQtId+".png?a="+rand); }); }else{ layer.msg(res.msg,{icon: 2,time: 2000}); } }).fail(function(res) { layer.msg(res.msg,{icon: 2,time: 2000}); });; }
这里用到了layer,不需要的话请自行注释,最后上传的时候不管怎样结果都是null,没找到原因,解决办法:
在boot应用的main方法所在的类中注入:
@Bean(name = "multipartResolver") public CommonsMultipartResolver multipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); return multipartResolver; }
问题解决。但是没有解决为什么是null。。。。。。