[实战]MVC5+EF6+MySql企业网盘实战(13)——编辑文件夹

写在前面

上篇文章实现了,新建文件夹以及与之前的上传文件的逻辑做了集成,本篇文章将实现编辑文件夹名称,其实这个也有难点,就是编辑文件夹名称时,要考虑文件夹中存在文件或者子文件夹的情况,因为他们的路径已经在数据库中存在了,如何对这些路径修改,是个难点。

系列文章

[EF]vs15+ef6+mysql code first方式

[实战]MVC5+EF6+MySql企业网盘实战(1)

[实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册

[实战]MVC5+EF6+MySql企业网盘实战(3)——验证码

[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像

[Bootstrap]modal弹出框

[实战]MVC5+EF6+MySql企业网盘实战(5)——登录界面,头像等比例压缩

[实战]MVC5+EF6+MySql企业网盘实战(5)——页面模板

[实战]MVC5+EF6+MySql企业网盘实战(5)——ajax方式注册

[实战]MVC5+EF6+MySql企业网盘实战(6)——ajax方式登录

[实战]MVC5+EF6+MySql企业网盘实战(7)——文件上传

[实战]MVC5+EF6+MySql企业网盘实战(8)——文件下载、删除

[实战]MVC5+EF6+MySql企业网盘实战(9)——编辑文件名

[实战]MVC5+EF6+MySql企业网盘实战(10)——新建文件夹

[实战]MVC5+EF6+MySql企业网盘实战(11)——新建文件夹2

[实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

[实战]MVC5+EF6+MySql企业网盘实战(13)——编辑文件夹

代码片段

首先先实现,没有子目录的情况下对文件夹名称进行编辑。另外,还需要考虑物理文件所在目录的重命名问题。

代码如下(一更)

        public JsonResult EditFolder()
        {
            UserInfo userInfo = Session["user"] as UserInfo;

            if (userInfo == null)
            {
                RedirectToAction("Login", "UserInfo");
            }
            string strId = Request.Params["fileId"];
            string strNewFolderName = Request.Params["fileNewName"];
            JavaScriptSerializer jss = new JavaScriptSerializer();
            if (string.IsNullOrEmpty(strId))
            {
                return new JsonResult() { Data = jss.Serialize(new { code = 500, msg = "请选择要编辑的文件夹" }) };
            }
            if (string.IsNullOrEmpty(strNewFolderName))
            {
                return new JsonResult() { Data = jss.Serialize(new { code = 500, msg = "文件夹名称不能为空" }) };
            }
            int folderId = Convert.ToInt32(strId);
            var findFolder = _myFileServiceRepository.Find(x => x.Id == folderId && x.User.Id == userInfo.Id && x.IsDelete == false);
            if (findFolder != null)
            {
                string strOldFolderName = findFolder.FileName + "/";
                //找到所有的目录,以 findFolder.FileName 结尾的目录,并修改
                var folders = _myFileServiceRepository.FindAll(x => x.User.Id == userInfo.Id && x.FolderPath.EndsWith(strOldFolderName) && x.IsDelete == false);
                foreach (var item in folders)
                {
                    string folderPath = item.FolderPath.Trim('/');
                    item.FolderPath = folderPath.Substring(0, folderPath.LastIndexOf('/')) + "/" + strNewFolderName + "/";
                    _myFileServiceRepository.Update(item);
                }
                findFolder.FileName = strNewFolderName;
                _myFileServiceRepository.Update(findFolder);
                _myFileServiceRepository.SaveChanges();
            }
            return new JsonResult() { Data = jss.Serialize(new { code = 200, msg = "修改成功" }) };
        }

前端

   function editFile(fileId, fileName,isFolder) {
        $(".modal-body").html('');
        $(".modal-body").html('<input type="text" placeholder="请输入名称" class="form-control" name="name" value="' + fileName + '" id="txtFileName" />');
        $("#modal-edit").modal('show');
        //弹出框注册取消,保存事件
        $('#lnkCancel').click(function () {
            //单机取消,清空内容
            $("#txtFileName").val('');
        });
        //首先移除已经绑定的单机事件
        $('#lnkSave').unbind('click');
        $('#lnkSave').bind('click', function () {
            var file = {
                fileId: fileId,
                fileNewName: $('#txtFileName').val()
            };
            var url=isFolder==1?'/Home/EditFolder':'/Home/EditFileName';
            $.post(url, file, function (data) {
                data = JSON.parse(data);
                if (data.code == 200) {
                    $('#sp-' + fileId).html(file.fileNewName);
                }else {
                    alert(data.msg);
                }
            });
        });

    };

 总结

今天就先到这里,代码逻辑还不完善。继续更新。太困了,眼睛睁不开了。

posted @ 2015-11-03 23:05  wolfy  阅读(774)  评论(0编辑  收藏  举报