/**
     *  这里保存或更新的方法,主要是为了格式化保存和修改功能传参问题,直接新建一个类来规范success和msg
     *      注意:这里做了关于头像上传的处理:
     *          1.获取到上传文件的路径,并判断该文件夹是否存在,不存在就直接创建一个
     *          2.获取传入对象employee的id和fileImage的文件名
     * 修改:    3.如果id不为空并且文件名不为空字符串,说明是在做修改
     *              3.1.那就根据id获取出该对象的头像名,并结合父路径判断如果存在就直接删除
     *              3.2.然后调用文件上传工具类进行上传
     * 添加:    4.如果id为空,并且文件名部位空字符串,说明在添加用户,此时,就直接调用上传工具类进行上传,同时将新的文件名设置进新建对象中
     * @param employee
     * @return
     */
    public AjaxResult saveOrUpdate(Employee employee, MultipartFile fileImage, HttpServletRequest req){
        try {
            //动态获取上传文件的路径
            String parentPath = req.getServletContext().getRealPath("/upload");
            //根据文件路径获取文件夹
            File file = new File(parentPath);
            //如果这个文件夹不存在,就直接创建一个文件夹
            if (!file.exists()){
                file.mkdir();
            }
            //获取传入对象id,id为null说明是添加,不为null说明是修改
            Long id = employee.getId();
            //获取文件名,如果文件名为null没有上传文件,不为null说明上传了文件
            String filename = fileImage.getOriginalFilename();


            //id不等于null,是指在修改,而filename 不等于空是指用户上传了
            if (id != null && filename != "") {
                //这里是在获取当前对象原先的头像名
                String sourceImage = employeeService.findById(employee.getId()).getHeadImage();
                //这里是截取头像名和父路径拼接,然后进行删除
                File file1 = new File(parentPath, sourceImage.split("/")[2]);
                //id不为null,并且传入的文件名也不为null,就确定是在进行修改,就执行修改的操作
                //如果这个文件存在,就直接删除,因为是修改,并且传入了新的头像
                if (file1 != null) {
                    file1.delete();
                }
                //文件名不为再进行上传,调用上传文件工具类进行上传
                String uploadName = FileUpLoad.upload(parentPath, fileImage);
                //然后把这个文件名设置到改对象中,然后进行保存
                employee.setHeadImage("/upload"+"/"+uploadName);
            }

            //这里表示在进行新增用户,所以没有id,但是上传了文件
            if (id == null && filename != ""){
                //文件名不为再进行上传,调用上传文件工具类进行上传
                String uploadName = FileUpLoad.upload(parentPath, fileImage);
                //然后把这个文件名设置到改对象中,然后进行保存
                employee.setHeadImage("/upload"+"/"+uploadName);
            }

            //直接保存该对象
            employeeService.save(employee);
            return new AjaxResult();
        } catch (Exception e) {
            e.printStackTrace();
            return new AjaxResult(false,"操作失败"+e.getMessage());
        }
    }

js部分

save: function () {
            //获取id为ff的form标签下面的input标签并且name=id的值
            var id = $("#ff input[name='id']").val();
            //默认url地址为保存
            var url = "/employee/save";
            console.log(1);
            if (id){//如果这个标签有值,说明就是做的修改,url地址又会不一样
                url = "/employee/update";
            }
            console.log(url);
            console.log(id);
            console.log(2);
            ff.form("submit",{

                type:'post',
                url:url,
                onsubmit:function () {
                    console.log(ff.form("validate"));
                    return ff.form("validate");
                },
                success:function (r) {
                    console.log(r);
                    if (r){
                        dlg.dialog("close");
                        dg.datagrid("load");
                    }else {
                        $.messager.alert("Error", "保存失败", "error");
                    }
                }
            })
        }

html部分

<tr>
   <td>头像:</td>
       <td>
       <input name="fileImage" id="fileImage"  class="easyui-filebox" ></input>
       </td>
</tr>

Arvinaa
9 声望1 粉丝