写在前面
上篇文章更新了编辑了文件名的操作,本片文章将实现新建文件夹的功能。
系列文章
代码片段
实现目标:可以新建文件夹。默认文件夹排在列表前面并按照时间进行排序。为了减少查询的次数,需要添加一个字段标示是否是文件夹,可置为0,文件置为1,按照这个字段排序,并按照时间进行排序。
为MyFile类添加属性,IsFolder
public int IsFolder { get; set; }
修改文件上传,文件类型为1,并修改文件列表,按照文件类型,时间排序。
[HttpGet]publicActionResult FileList()
{
UserInfo userInfo= Session["user"] asUserInfo;if (userInfo == null)
{return RedirectToAction("Login", "UserInfo");
}var fileList = _myFileServiceRepository.FindAll(x => x.User.Id == userInfo.Id && !x.IsDelete).OrderBy(x => x.IsFolder).OrderByDescending(x =>x.CreateDt);
ViewBag.UserInfo=userInfo;
ViewBag.ChildTitle= "我的网盘";returnView(fileList);
}
新建文件夹
publicJsonResult CreateFolder()
{
UserInfo userInfo= Session["user"] asUserInfo;if (userInfo == null)
{
RedirectToAction("Login", "UserInfo");
}string folderPath = Request.Params["folderPath"];string folderName = Request.Params["folderName"];if (string.IsNullOrEmpty(folderName))
{throw new ArgumentNullException("文件夹名称不能为空");
}//检查文件夹是否已经存在
var count = _myFileServiceRepository.FindAll(x => x.User.Id == userInfo.Id && x.IsFolder == 0 && x.IsDelete == false &&x.FileName.Contains(folderName)).Count();
userInfo= _userInfoServiceRepository.Find(x => x.Id ==userInfo.Id);if (count > 0)
{//如果不存在,则新建,否则进行自动重命名
folderName = folderName + "(" + (count + 1).ToString() + ")";
}if (string.IsNullOrEmpty(folderPath))
{
folderPath= "/NetDisk/" +userInfo.UserName;
}
MyFile folder= newMyFile()
{
FilePath= folderPath + '/' +folderName,
FileName=folderName,
CreateDt=DateTime.Now,
User=userInfo,
FileExt= string.Empty,
FileIcon= "/Content/Images/FolderType.png",
FileMd5= string.Empty,
FileSize= 0,
IsDelete= false,
ModifyDt=DateTime.Now
};try{
_myFileServiceRepository.Add(folder);
_myFileServiceRepository.SaveChanges();
}catch(Exception)
{return new JsonResult() { Data = new JavaScriptSerializer().Serialize(new { code = 500, msg = "创建失败"}) };
}return new JsonResult() { Data = new JavaScriptSerializer().Serialize(new { code = 200, folder =folder }) };
}
前端
@{int i = 0;}@foreach (var item inModel)
{
i++;
@{if (@item.FileMd5 != ""){
@item.FileName@item.FileSize 字节}else{
@item.FileName
}}
@item.ModifyDt编辑
删除@{if (@item.FileMd5 != "")
下载}
}
}jquery
//创建文件夹
$('#btnNewFolder').click(function () {//设置弹出框标题
var title = $('#alertTitlte').html();
$('#alertTitlte').html('新建文件夹');//清空弹出框内容
$(".modal-body").html('');
$(".modal-body").html('');
$('#txtFileName').val('');
$('#modal-edit').modal('show');
$('#txtFileName').val('新建文件夹');
$('#lnkSave').unbind('click');
$('#lnkSave').bind('click', function () {
$.post('CreateFolder', { folderName: $('#txtFileName').val(), folderPath: $('#hdFilePath').val() }, function (data) {
data=JSON.parse(data);var folder =data.folder;if (data.code == 200) {
$('
' + folder.FileName + '' + CurentTime() + ' 编辑 删除 ').insertBefore($('#fileList tbody'));};//还原弹出框标题
$('#alertTitlte').html(title);
});
});
});
测试
总结
本篇文章简单实现了新建文件夹的过程。下篇文章将实现进入文件夹的过程。