js代碼如下
var formData = new FormData(); for (var i = 0; i < data.length; i++) { if(data[i]){ formData.append("datafiles", data[i]); } } formData.append("content", content); $.ajax({ url: '${pageContext.request.contextPath}/forum/addContent', type: 'post', data: formData, cache: false, contentType:false, processData:false, success: function(result) { console.log(res); } });
其中打印data中的數據都是undifine,datafiles也是undifine
這時候報錯400 (Bad Request)
也就是說未進入服務器,后台代碼如下:
@RequestMapping("/addContent")
@ResponseBody
public String uploadFile(Entrance_forum_content entrance_forum_content,@RequestParam(value="datafiles",required=false) CommonsMultipartFile[] files, HttpServletRequest request)throws Exception{
if(files!=null){
String filePath = request.getSession().getServletContext().getRealPath("/upload/entrance_forum");
Map<String,String> map = new HashMap<String, String>();
CommonsMultipartFile multipartFile = null;
for (int i = 0; i < files.length; i++) {
multipartFile = files[i];
String uploadFile = SuperUploadFileUtil.uploadFile(multipartFile, filePath);
if(uploadFile!=""){
map.put("img"+(i+1), "/upload/entrance_forum/"+uploadFile);
}
}
SuperBeanUtils.setFieldValue(entrance_forum_content, map);
}
return "success";
}
重點在參數部分,之前我是未使用
required=false
,那么如果不上傳文件,datafiles中都為undefined,后台默認為沒有該參數,所以報錯,所以加上
required=false
即可
