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。。。。。。