[实战]MVC5+EF6+MySql企业网盘实战(13)——编辑文件夹
写在前面
上篇文章实现了,新建文件夹以及与之前的上传文件的逻辑做了集成,本篇文章将实现编辑文件夹名称,其实这个也有难点,就是编辑文件夹名称时,要考虑文件夹中存在文件或者子文件夹的情况,因为他们的路径已经在数据库中存在了,如何对这些路径修改,是个难点。
系列文章
[EF]vs15+ef6+mysql code first方式
[实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
[实战]MVC5+EF6+MySql企业网盘实战(3)——验证码
[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像
[实战]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 = , msg = "请选择要编辑的文件夹" }) };
}
if (string.IsNullOrEmpty(strNewFolderName))
{
return new JsonResult() { Data = jss.Serialize(new { code = , 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(, folderPath.LastIndexOf('/')) + "/" + strNewFolderName + "/";
_myFileServiceRepository.Update(item);
}
findFolder.FileName = strNewFolderName;
_myFileServiceRepository.Update(findFolder);
_myFileServiceRepository.SaveChanges();
}
return new JsonResult() { Data = jss.Serialize(new { code = , 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);
}
});
});
};
总结
今天就先到这里,代码逻辑还不完善。继续更新。太困了,眼睛睁不开了。
[实战]MVC5+EF6+MySql企业网盘实战(13)——编辑文件夹的更多相关文章
- [实战]MVC5+EF6+MySql企业网盘实战(28)——其他列表
写在前面 本篇文章将实现,其他文件类型的列表. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF ...
- [实战]MVC5+EF6+MySql企业网盘实战(27)——应用列表
写在前面 本篇文章将实现应用列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘 ...
- [实战]MVC5+EF6+MySql企业网盘实战(26)——音乐列表
写在前面 本篇文章将实现,音乐列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网 ...
- [实战]MVC5+EF6+MySql企业网盘实战(25)——种子列表
写在前面 上篇文章实现了视频列表,本篇文章继续实现其他的文件列表.功能相似.这里就不再赘述. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MyS ...
- [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表
写在前面 上篇文章实现了文档列表,所以实现视频列表就依葫芦画瓢就行了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ...
- [实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表
写在前面 上篇文章实现了图片列表,这篇文章实现文档列表将轻车熟路,因为逻辑基本相似,只是查询条件的不同.这里将txt,doc,docx,ppt,pptx,xls,xlsx的文件都归为文档列表中. 系列 ...
- [实战]MVC5+EF6+MySql企业网盘实战(22)——图片列表
写在前面 实现逻辑是:单击图片节点,加载所有的当前用户之前上传的图片,分页,按时间倒序加载. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MyS ...
- [实战]MVC5+EF6+MySql企业网盘实战(21)——网盘操作日志
写在前面 上篇文章介绍了一个bootstrap的分页插件,这篇将弄一个完整的例子,就以日志分页为例说明如何请求服务端然后进行分页. 系列文章 [EF]vs15+ef6+mysql code first ...
- [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator
写在前面 考虑到数据量的问题,特引入bootstrap的分页插件.插件下载地址:https://github.com/lyonlai/bootstrap-paginator 系列文章 [EF]vs15 ...
随机推荐
- CSUST 四月选拔赛个人题解
这场比赛演的逼真,感谢队友不杀之恩 总结:卡题了赶紧换,手上捏着的题尽快上机解决 http://csustacm.com:4803/ 1113~1122 1113:六学家 题意:找出满足ai+aj=a ...
- python自学笔记(二)
通过前文介绍,大体上可以用学过的知识做一些东西了. 这里简单介绍下python参数解析argparse命令. 使用argparse需要引用 import argparse 然后调用 parser = ...
- 对于redis底层框架的理解(五)
之前总结了redis的通讯流程,基本框架,epoll的封装等等,这次介绍下 redis对于select模型的封装 //select 模型 typedef struct aeApiState { //读 ...
- bzoj 1510 [POI2006]Kra-The Disks 二分
1510: [POI2006]Kra-The Disks Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 466 Solved: 272[Submit][ ...
- C语言 结构体作为参数和返回值使用
方案一:结构体变量作为参数,进行传值. 编译器需要拷贝,不影响origin value,使用成员操作符(.)直接访问 /**************************************** ...
- 《用Apache HttpClient实现URL重定向》
作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 很多网站都使用了URL重定向技术,把一个原始请求从一个位置路由到另一个位置.原因可能是多方面的,比如域名转 ...
- Atcoder #014 agc014_C BFS
LINK 题意:给定起点和最大操作次数$k$,地图'#'为上锁房间, 每次可以走$k$步,并任意解锁$k$个房间,问到达地图边界的最小次数. 思路:其实上锁与否并没有关系,因为先把$k$步走的次数用完 ...
- C11线程管理:原子变量&单调函数
1.原子变量 C++11提供了原子类型std::atomic<T>,可以使用任意类型作为模板参数,使用原子变量就不需要使用互斥量来保护该变量,用起来更加简洁. 举个例子,如果要做一个计数器 ...
- JAVA多线程基础学习二:synchronized
本篇主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题,没错就是使用synchronized. 一.如何解决线程安全问题? 一般 ...
- 从零搭建SSM框架(五)Maven实现Tomcat热部署
配置tomcat 第一步:需要修改tomcat的conf/tomcat-users.xml配置文件.添加用户名.密码.权限. <role rolename="manager-gui&q ...