多字段 上传单张多张图片文件java后端只接收部分字段 file为空判断问题

在项目开发中遇到的一个小小问题,上传图片 有备注信息 两个字段,修改编辑的时候。这样表单提交 file 有可能为空的情况,后端接收时候 无法判断file对象。

JSP页面文件上传

<form action="uploadBanner" method="post" enctype="multipart/form-data">
   <input type="file" name="file" id="file" accept="image/*" onchange="checkImage()">
  <span onclick="updatePic()" style="color: blue; cursor:pointer">更换图片</span>
     图片标题:
    <input type="text" name="bak" id="bak" onkeyup="limitLength(value,20,'','bak')" placeholder="建议10个字以内,可不填">
</form>

checkImage()是做文件校验 图片大小 格式 等等。。。
ajax发送请求

  function edit() {
    
    
        var formdata=new FormData();
        formdata.append("id",$('#advertiseId').val());
        formdata.append('fileName', $('#filename').get(0).files[0]);
        formdata.append('bak',$('#bak').val());
        $.ajax({
    
    
            async: false,
            type: 'POST',
            url: '${basePath}/manager/sys/content/editAdvertise',
            dataType: 'json',
            data: formdata,
            contentType:false,//ajax上传图片需要添加
            processData:false,//ajax上传图片需要添加
            success: function (data) {
    
    
                $.operate.successCallback(data);
            }
        })
    }

解决方案:
1.使用 required = false;

@RequestMapping(value = "/editAdvertise",method = RequestMethod.POST) @ResponseBody
public AjaxResult editAdvertise(@RequestParam(value = "file",required = false) MultipartFile file,String bak,HttpServletRequest request){
    
    
	if (file==null && bak.trim().equals(Objecet.getBak())){
    
    
            return error("请您对图片或者标题做出修改");
    }
	、、、、、、
}
@RequestMapping(value = "/editAdvertise",method = RequestMethod.POST) @ResponseBody
public AjaxResult editAdvertise(String bak,HttpServletRequest request){
    
    
	  MultipartHttpServletRequest multipart = (MultipartHttpServletRequest)request;
        MultipartFile file = multipart.getFile("file");
        if (file.isEmpty()&& bak.trim().equals(Object.getBak())){
    
    
			return error("请您对图片或者标题做出修改");
        }
	、、、、、、
}

猜你喜欢

转载自blog.csdn.net/Better000/article/details/106114345