spring-mvc/boot fileUpload 文件上传

文件上传功能

参考url:http://www.baeldung.com/spring-file-upload

在spring-common/ servlet / config / 配置bean

   <!-- 定义文件上传解析器 -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设定默认编码 -->
        <property name="defaultEncoding" value="UTF-8"></property>
        <!-- 设定文件上传的最大值5MB,5*1024*1024 -->
        <property name="maxUploadSize" value="5242880"></property>
    </bean>

spring-boot controller

    public static String              ATTACHMENT_FOLDER       = "root/upload/";                                                        // windows版本文件路径

    @RequestMapping(value = "save", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
    public String buildingSave(@RequestParam(required = false, value = "file") MultipartFile file) {
    /* multiparfile 首先需要commom-fileupload.jar  1.3 支持,然后需要配置bean */
       Map<String, String> resultMap = new HashMap<String, String>();
       try {
            this.checkBuildNum(building);
            String fileName = this.uploadFile(file, fileName);
        } catch (Exception e) {
            resultMap.put("message", e.getMessage());
            resultMap.put("result", "failure");
        }
        return JsonKit.toJson(resultMap);
    }

     /**
   *  上传文件到服务器,如果文件已经存在则删除已有的文件。
   * @param file
   * @param newName  给文件重命名
   * @return fileName  存储到服务器后的文件名
   * @throws IOException
   * @author  zgli
   */
  private String uploadFile(MultipartFile file, String newName) throws IOException{
       String fileName = null;
       if (null == file)
           return fileName;
       if (null == newName || "" == newName) {
           fileName  = file.getOriginalFilename();
       }else {
           String orignalFilename = file.getOriginalFilename();
           /*  获取文件后缀名 */
           String extentionFile =  orignalFilename.substring(orignalFilename.lastIndexOf(".") + 1);
           fileName = name + "." + extentionFile;
       }
       File fileDir = new File(ROOT);
       if(!fileDir.exists()) {
          fileDir.setWritable(true);
          fileDir.mkdirs();
       }/* 如果文件存在则覆盖已经存在的文件 */
       Files.copy(file.getInputStream(), Paths.get(ROOT, fileName), StandardCopyOption.REPLACE_EXISTING); 
       return fileName; 
  }

freeMarker formdata

jsp

     <form id="data_form" class="form-horizontal form-label-left" novalidate="" enctype="multipart/form-data">
       <!-- file upload  -->
            <input type="file"  id="file" />
         <div >
           <button id="btnSaveBuilding" type="button" >保存</button>
           <button id="btnBack" type="button"> 取消</button>
         </div>
       </div>
     </form>
         <script>
      //点击保存按钮的点击事件
      $("#btnSaveBuilding").click(function(){
        // alert("this btnSaveBuilding test!------");
        //  debugger;
          //校验
         var   ajaxUrl = "/building/save";
          var formData = new FormData();//必须是new FormData后台才能接收到
          formData.append("file", $("#file")[0].files[0]);

          $.ajax({
              type: "POST",
              url: ajaxUrl,
              data:formData,
              cache: false,
              processData: false,
              contentType: false,
              success: function(result){
                 if(result.result=="success"){
                    alert(("操作成功");
                 }else{
                    alert("操作失败,错误信息:<br>"+result.message);
                 }
             }
          });
        });
      //取消按钮的点击事件
      $("#btnBack").click(function(){
          var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
          parent.layer.close(index);//关闭当前layer弹出层窗口
      });
    </script>

猜你喜欢

转载自blog.csdn.net/li740207611/article/details/81292548