在springmvc中如何使用ajax即上傳文件又上傳參數呢?
本文參考於
https://blog.csdn.net/chengziaa123/article/details/81041371
這里在JS中使用到了FromData
springmvc.xml配置
<!-- 配置文件上傳解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--設置文件上傳的大小 字節 --> <property name="maxUploadSize" value="20971520"></property> <property name="defaultEncoding" value="UTF-8"></property> </bean>
前台代碼
<script type="text/javascript"> function saveDraft(){ //創建一個forData var formData = new FormData($('#projectinfo')[0]); /* alert($("#province7").val()+$("#city7").val()); var formData = new FormData($("#projectinfo")); formData.append("ps_file",$("#ps_file")[0].files[0]); formData.append("ps_name",$("#ps_name").val()); formData.append("ps_goal",$("#ps_goal").val()); formData.append("ps_money",$("#ps_money").val()); formData.append("ps_days",$("#ps_days").val()); fromData.append("province",$("#province7").val()); fromData.append("city",$("#city7").val()); */ $.ajax({ type : 'POST', url : '/Crowd-funding/projects/upload', data : formData, dataType:"json", async: false, cache : false, processData : false, contentType : false, }).success(function(data) { alert("上傳成功"); }).error(function() { alert("上傳失敗"); }); } </script>
后台代碼
@RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public boolean upload(@RequestParam("ps_file") MultipartFile ps_file, HttpServletRequest request, String ps_name , String ps_goal , String ps_money, String ps_days, String province, String city) { System.out.println(province+city); Map<String, String> modelMap = new HashMap<>(); boolean flay=true; if (!ps_file.isEmpty()) { //獲取文件上傳真實保存路徑 String storePath = request.getServletContext().getRealPath("/images"); Random r = new Random(); String fileName = ps_file.getOriginalFilename(); String[] split = fileName.split(".jpg"); fileName = split[0] + r.nextInt(1000); fileName = fileName + ".jpg"; System.out.println(fileName); File filePath = new File(storePath, fileName); System.out.println(filePath.getParentFile()); if (!filePath.getParentFile().exists()) { filePath.getParentFile().mkdirs();// 如果目錄不存在,則創建目錄 } try { ps_file.transferTo(new File(storePath + File.separator + fileName));// 把文件寫入目標文件地址 } catch (Exception e) { e.printStackTrace(); modelMap.put("back", "error"); return flay=false; } modelMap.put("back", "success"); } else { modelMap.put("back", "error"); } return flay; }
