包括图片上传、文件上传、Flash上传、多媒体上传、空间管理(图片空间、文件空间等等)

一、编辑器相关参数

二、简单的封装类

这里只是做了简单的封装,欢迎大家指点改正。

public class KindeditorHelper
{
/// <summary>
/// 上传
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public static ResponseUploadMessage Upload(RequestUploadMessage req)
{
if (req.imgFile == null || req.imgFile.ContentLength <= )
{
return new ResponseUploadMessage() { error = , message = "上传文件不能为空" };
} if (req.dir == UploadFileType.image && req.imgFile.ContentType.IndexOf("image/") == -)
{
return new ResponseUploadMessage() { error = , message = "上传图片格式错误" };
} if (String.IsNullOrEmpty(req.savePath))
{
return new ResponseUploadMessage() { error = , message = "保存文件夹不能为空" };
} //保存文件夹不存在就创建
if (Directory.Exists(req.savePath) == false)
{
Directory.CreateDirectory(req.savePath);
} string fileExtensions = Path.GetExtension(req.imgFile.FileName);
string newFileName = DateTime.Now.ToString("yyyyMMddHHmmssss") + new Random(Guid.NewGuid().GetHashCode()).Next(, ) + fileExtensions; string fullPath = Path.Combine(req.savePath, newFileName);
req.imgFile.SaveAs(fullPath); return new ResponseUploadMessage() { error = , url = req.webUrl + newFileName };
} /// <summary>
/// 空间管理
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public static ResponseManageMessage Manage(RequestManageMessage req)
{
string[] fileTypes = new string[] { "gif", "jpg", "jpeg", "png", "bmp" }; //图片后缀名
string currentPath = ""; //当前文件路径
string currentUrl = ""; //当前URL路径
string currentDirPath = ""; //当前文件夹路径
string moveupDirPath = ""; //上一级文件夹路径 string dirPath = req.savePath;
string webUrl = req.webUrl;
string path = req.path; if (String.IsNullOrEmpty(path))
{
path = "";
} if (Directory.Exists(dirPath) == false)
{
Directory.CreateDirectory(dirPath); //保存文件夹不存在就创建
} if (path == "")
{
currentPath = dirPath;
currentUrl = webUrl;
currentDirPath = "";
moveupDirPath = "";
}
else
{
currentPath = dirPath + path;
currentUrl = webUrl + path;
currentDirPath = path;
moveupDirPath = Regex.Replace(currentDirPath, @"(.*?)[^\/]+\/$", "$1");
} //不允许使用..移动到上一级目录
if (Regex.IsMatch(path, @"\.\."))
{
HttpContext.Current.Response.Write("Access is not allowed.");
HttpContext.Current.Response.End();
} //最后一个字符不是/
if (path != "" && !path.EndsWith("/"))
{
HttpContext.Current.Response.Write("Parameter is not valid.");
HttpContext.Current.Response.End(); } //目录不存在或不是目录
if (Directory.Exists(currentPath) == false)
{
HttpContext.Current.Response.Write("Directory does not exist.");
HttpContext.Current.Response.End();
} string[] dirList = Directory.GetDirectories(currentPath);
string[] fileList = Directory.GetFiles(currentPath); switch (req.order)
{
case "SIZE":
Array.Sort(dirList, new NameSorter());
Array.Sort(fileList, new SizeSorter());
break;
case "TYPE":
Array.Sort(dirList, new NameSorter());
Array.Sort(fileList, new TypeSorter());
break;
case "NAME":
Array.Sort(dirList, new NameSorter());
Array.Sort(fileList, new NameSorter());
break;
case "TIME":
Array.Sort(dirList, new TimeSorter());
Array.Sort(fileList, new TimeSorter());
break;
} ResponseManageMessage res = new ResponseManageMessage();
res.moveup_dir_path = moveupDirPath;
res.current_dir_path = currentDirPath;
res.current_url = currentUrl;
res.total_count = dirList.Length + fileList.Length; for (int i = ; i < dirList.Length; i++)
{
DirectoryInfo dir1 = new DirectoryInfo(dirList[i]);
FileList theDir = new FileList();
theDir.is_dir = true;
theDir.has_file = (dir1.GetFileSystemInfos().Length > );
theDir.filesize = ;
theDir.is_photo = false;
theDir.filetype = "";
theDir.filename = dir1.Name;
theDir.datetime = dir1.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");
res.file_list.Add(theDir);
} for (int i = ; i < fileList.Length; i++)
{
FileInfo file = new FileInfo(fileList[i]);
FileList theFile = new FileList();
theFile.is_dir = false;
theFile.has_file = false;
theFile.filesize = file.Length;
theFile.is_photo = Array.IndexOf(fileTypes, file.Extension.Substring().ToLower()) >= ;
theFile.filetype = file.Extension.Substring();
theFile.filename = file.Name;
theFile.datetime = file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");
res.file_list.Add(theFile);
} return res;
}
}

RequestUploadMessage类

/// <summary>
/// 上传请求类
/// </summary>
public class RequestUploadMessage
{
/// <summary>
/// 类型
/// </summary>
public UploadFileType dir { get; set; } /// <summary>
/// 本地地址
/// </summary>
public string localUrl { get; set; } /// <summary>
/// 上传文件
/// </summary>
public HttpPostedFileBase imgFile { get; set; } /// <summary>
/// 保存文件夹路径
/// </summary>
public string savePath { get; set; } /// <summary>
/// Url地址
/// </summary>
public string webUrl { get; set; }
}

ResponseUploadMessage类

/// <summary>
/// 上传结果类
/// </summary>
public class ResponseUploadMessage
{
/// <summary>
/// 结果码 0成功 1失败
/// </summary>
public int error { get; set; } /// <summary>
/// 信息
/// </summary>
public string message { get; set; } /// <summary>
/// Url地址
/// </summary>
public string url { get; set; }
}

RequestManageMessage类

/// <summary>
/// 空间管理类
/// </summary>
public class RequestManageMessage
{
/// <summary>
/// 类型
/// </summary>
public UploadFileType dir { get; set; } /// <summary>
/// 排序
/// </summary>
public string order { get; set; } /// <summary>
/// 路径
/// </summary>
public string path { get; set; } /// <summary>
/// 文件夹路径 物理路径
/// </summary>
public string savePath { get; set; } /// <summary>
/// URL
/// </summary>
public string webUrl { get; set; }
}

ResponseManageMessage类

public class ResponseManageMessage
{
/// <summary>
/// 上一级文件夹路径
/// </summary>
public string moveup_dir_path { get; set; } /// <summary>
/// 当前文件夹路径
/// </summary>
public string current_dir_path { get; set; } /// <summary>
/// 当前URL地址
/// </summary>
public string current_url { get; set; } /// <summary>
/// 总数量 包括文件夹、文件
/// </summary>
public int total_count { get; set; } /// <summary>
/// 文件列表 包括文件夹
/// </summary>
public List<FileList> file_list { get; set; } public ResponseManageMessage()
{
file_list = new List<FileList>();
}
} public class FileList
{
/// <summary>
/// 是否文件夹
/// </summary>
public bool is_dir { get; set; } /// <summary>
/// 是否有文件 就是这个文件夹里有文件吗
/// </summary>
public bool has_file { get; set; } /// <summary>
/// 文件大小 文件夹为0
/// </summary>
public long filesize { get; set; } /// <summary>
/// 是否图片
/// </summary>
public bool is_photo { get; set; } /// <summary>
/// 文件类型
/// </summary>
public string filetype { get; set; } /// <summary>
/// 文件名
/// </summary>
public string filename { get; set; } /// <summary>
/// 最后一次修改日期
/// </summary>
public string datetime { get; set; }
}

UploadFileType类

public enum UploadFileType
{
image = , //图片
file = , //文件
flash = , //flash
media = //多媒体
}

空间管理排序类

/// <summary>
/// 用于kineditor文本编辑器 文件名排序
/// </summary>
public class NameSorter : IComparer
{
public int Compare(object x, object y)
{
if (x == null && y == null)
{
return ;
}
if (x == null)
{
return -;
}
if (y == null)
{
return ;
}
FileInfo xInfo = new FileInfo(x.ToString());
FileInfo yInfo = new FileInfo(y.ToString()); return xInfo.FullName.CompareTo(yInfo.FullName);
}
} /// <summary>
/// 用于kineditor文本编辑器 文件大小排序
/// </summary>
public class SizeSorter : IComparer
{
public int Compare(object x, object y)
{
if (x == null && y == null)
{
return ;
}
if (x == null)
{
return -;
}
if (y == null)
{
return ;
}
FileInfo xInfo = new FileInfo(x.ToString());
FileInfo yInfo = new FileInfo(y.ToString()); return xInfo.Length.CompareTo(yInfo.Length);
}
} /// <summary>
/// 用于kineditor文本编辑器 文件类型大小排序
/// </summary>
public class TypeSorter : IComparer
{
public int Compare(object x, object y)
{
if (x == null && y == null)
{
return ;
}
if (x == null)
{
return -;
}
if (y == null)
{
return ;
}
FileInfo xInfo = new FileInfo(x.ToString());
FileInfo yInfo = new FileInfo(y.ToString()); return xInfo.Extension.CompareTo(yInfo.Extension);
}
} public class TimeSorter : IComparer
{
public int Compare(object x, object y)
{
if (x == null && y == null)
{
return ;
}
if (x == null)
{
return -;
}
if (y == null)
{
return ;
}
FileInfo xInfo = new FileInfo(x.ToString());
FileInfo yInfo = new FileInfo(y.ToString()); return xInfo.LastWriteTime.CompareTo(yInfo.LastWriteTime);
}
}

三、使用

    public JsonResult Upload(RequestUploadMessage model)
{
model.savePath = String.Format(@"f:\richtextbox\{0}\", model.dir.ToString());
model.webUrl = String.Format("http://localhost:52527/richtextbox/{0}/", model.dir.ToString());
ResponseUploadMessage result = KindeditorHelper.Upload(model);
return Json(result, JsonRequestBehavior.DenyGet);
} public JsonResult FileManager(RequestManageMessage model)
{
model.webUrl = String.Format("http://localhost:52527/richtextbox/{0}/", model.dir.ToString());
model.savePath = String.Format(@"f:\richtextbox\{0}\", model.dir.ToString()); ResponseManageMessage result = KindeditorHelper.Manage(model);
return Json(result, JsonRequestBehavior.AllowGet);
}

【Kindeditor编辑器】 文件上传、空间管理的更多相关文章

  1. nodejs+express-实现文件上传下载管理的网站

    Nodejs+Express-实现文件上传下载管理的网站 项目Github地址(对你有帮助记得给星哟):https://github.com/qcer/updo 后端:基于nodejs的express ...

  2. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  3. jquery插件课程2 放大镜、多文件上传和在线编辑器插件如何使用

    jquery插件课程2 放大镜.多文件上传和在线编辑器插件如何使用 一.总结 一句话总结:插件使用真的还是比较简单的,引包,初始化,配置参数(json),配置数据(json),而后两步不是必须的.而且 ...

  4. Web安全-之文件上传漏洞场景

    1   上传漏洞危害介绍 上传是Web中最常见的功能,如果上传功能存在设计.编码缺陷,就容易形成上传漏洞,从而成为致命的安全问题,攻击者可以通过上传脚本木马,实现查看/篡改/删除源码和任意涂鸦网页,可 ...

  5. [红日安全]Web安全Day5 - 任意文件上传实战攻防

    本文由红日安全成员: MisakiKata 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目 ...

  6. JQuery文件上传插件ajaxFileUpload在Asp.net MVC中的使用

    0 ajaxFileUpload简介 ajaxFileUpload插件是一个非常简单的基于Jquery的异步上传文件的插件,使用过程中发现很多与这个同名的,基于原始版本基础之上修改过的插件,文件版本比 ...

  7. SpringMVC文件上传下载

    在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...

  8. ajaxFileUpload文件上传

    一.简介 ajaxFileUpload是一种异步的文件上传控件,通过ajax进行文件上传,并获取上传处理结果.在很多时候我们需要使用到文件上传的功能,但是不需要使用那些强大的上传插件.此时就可以使用a ...

  9. 文件上传ajaxfileupload.js插件

    Html:  <div class="container">         <form id="form" runat="serv ...

  10. java文件上传--基于ajaxFileUpload+struts2

    jQuery插件ajaxFileUpload可以实现ajax文件上传,使用非常简单. 下面做一个简单的demo(以上传图片为例),实现图片上传,图片显示,图片下载 注:以下的代码是在项目的基础上进行开 ...

随机推荐

  1. js join 与 split

    var a = [] var b = [1,2,3] b.push('4')   // b = [1,2,3,4] a = b.join('-')  // a = '1-2-3-4' b = a.sp ...

  2. sibling

    sibling 英 ['sɪblɪŋ] 美 ['sɪblɪŋ] 名词. 兄,弟,姐,妹网络. 兄弟,兄弟姐妹,同胞变形. 复数:siblings

  3. 用HttpClient发送HTTPS请求报SSLException: Certificate for <域名> doesn't match any of the subject alternative names问题的解决

    最近用server酱-PushBear做消息自动推送,用apache HttpClient做https的get请求,但是代码上到服务器端就报javax.net.ssl.SSLException: Ce ...

  4. 基于快速排序的数组划分:2组 3组 K组(sort color)大小写排序 · Partition Array

    2组: [抄题]: 给出一个整数数组 nums 和一个整数 k.划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中 ...

  5. fckeditor 数据库 取值 显示

    用fckeditor把html代码存到数据库中,取出来显示的时候用什么控件呢?用Literal  或  Label  控件.

  6. 7-掉馅饼(数组dp)

    /*                                             免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB                   ...

  7. 零基础学习hadoop到上手工作线路指导(初级篇)

    零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...

  8. Laravel 5 如何对部份 URI 禁用 CSRF 验证

    打开中间件 VerifyCsrfToken.php 在其 $except 属性中添加要禁用的 uri,如: api/user/add api/user/* api/*

  9. [SoapUI] How to create a random UUID in each Request's Headers

    ${=java.util.UUID.randomUUID()}  is OK

  10. C语言中以字符串形式输出枚举变量

    C语言中以字符串形式输出枚举变量 摘自:https://blog.csdn.net/haifeilang/article/details/41079255 2014年11月13日 15:17:20 h ...