springMVC(十)——使用Ajax文件上传和参数上传

在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>
知识兔

前台代码 

function saveDraft(){
      //创建一个forData 
        /*  var formData = new FormData($('#projectinfo')[0]); */
     
var formData = new FormData($("#projectinfo"));//projectinfo为from的ID
     //append中的两个参数分别为:第一个是HTML中的name标签,第二个是需要传递的值 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()); $.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>
知识兔

后台代码

 RequestMethod.POST)
    @ResponseBody
  //注意:这里接收参数只能用一个个对应的name来接收,不能使用对象来接收 public boolean upload(@RequestParam("ps_file") MultipartFile ps_file, HttpServletRequest request, @RequestParam(value="ps_name",required = false) String ps_name ,@RequestParam(value="ps_goal",required = false) String ps_goal ,@RequestParam(value="ps_money",required = false) String ps_money,@RequestParam(value="ps_days",required = false) String ps_days) { System.out.println(ps_name+" "+ps_goal); 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; }
知识兔
计算机