SpringBoot文件上传为null????

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

猜你喜欢

转载自blog.csdn.net/qq1437715969/article/details/79941646