ajaxfileupload檔案上傳帶引數,json序列化到後臺!
ajaxfileupload方法傳檔案帶上json資料,到controller這麼都是接受到"{"這個符號.
方法一、自己寫的方法
html
var f2= { "a" : "123", "b" : policyArticleType, "c" : $("#policyTitle").val(), "d" : $("#policySource").val(), "e" : $("#policyDate").val() }; var f3=JSON.stringify(f2); f3=f3.replace(new RegExp('"',"gm"),"'");
$.ajaxFileUpload({ fileElementId : 'policyArticleAddress', //需要上傳的檔案域的ID,即<input type="file">的ID。 url : ' ${contextpath}/admin/zcfg/upload', //後臺方法的路徑 dataType : 'json', //伺服器返回的資料型別。可以為xml,script,json,html。如果不填寫,jQuery會自動判斷。 secureuri : false, //是否啟用安全提交,預設為false。 data:{"obj":f3}, //async : true, //是否是非同步 success : function(data) { //提交成功後自動執行的處理函式,引數data就是伺服器返回的資料。 //console.log(data.message); policyArticleAddress1 = data.message;
} });
後臺接收
// 上傳檔案 @RequestMapping(value = "/upload") @ResponseBody public Map<String, Object> upload(@RequestParam("file") CommonsMultipartFile uploadFile,@RequestParam("obj")String obj,HttpServletRequest request) throws Exception { obj=obj.replaceAll("\'", "\""); PolicyTableModel model2=JSON.parseObject(obj,PolicyTableModel.class); if (!uploadFile.isEmpty()) { String oriName = uploadFile.getOriginalFilename(); String split[] = oriName.split("\\."); String newName = split[0] + "_" + new Date().getTime() + "." + split[1]; }else{ res.put("message", "請先選擇檔案,再上傳!"); return res; } return res; }
方法二、轉載修改 ajaxfileupload檔案進行原始碼