1、下载ueditor1.4.3.3 UTF-8的版本
2、新建一个项目,在项目中添加UEditor,把下载好的插件都放在ueditor这个文件夹中,在进行一些基本的配置
3、在根目录下新建一个为index.aspx的网页,在进行如下的配置,引用三个js文件,在form表单里面用csript来构造一个页面,在让var ue = UE.getEditor("container");来初始化这个页面。运行后界面都已经出现啦
4、运行index.aspx这个页面时会报错,json没引用之类的,一开始我找了很多方法,后来才看到是没有添加Newtonsoft.Json.dll的引用,在下载的UEDITOR/net文件的bin文件里找到这个dll动态库,然后在项目中添加引用。这样无论是点击单图上传还是多图上传都可以啦。那么还有一个问题,这个图片传到哪里了呢,就需要更改一下net目录下的config.json文件
"imageUrlPrefix": " / ", /* 图片访问路径前缀 */
"imagePathFormat": "uploadFile/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
这样的话,上传的图片会保存在根目录的uploadFile/image/上传图片的时间 文件夹中,如果没有建文件夹也没关系,会自动生成的。如果觉得图片保存目录太深了,也可以自定义上面的图片文件夹。
图片访问路径前缀一点要为空,不然上传之后就会出错,图片出不来。imagepathFormat里的文件夹是自己新建的,我当时只新建了uploadFile里面的image文件夹自己出现了,还有一个文件就是以日期命名的,如果你不需要在包含文件,就可以把后面的{yyyy}这些日期的都删了。
5.现在图片已经可以上传了。但还有一个功能没完成,就是删除功能了,我这里要做的是单个图片的删除。
6.图片的删除,首先在线管理栏目的图片右上角会有删除一词出现,现在就来实现吧。我对样式美感那些把握的不是那么好,所以直接在网上看了好看的例子,用的他的样式。
找到ueditor\dialogs\image\image.js这个文件,增加了删除按钮,是一把x,这时候已经有了删除的状态功能,真正实现删除的功能是仿照了uploadimage.cs文本编辑器里面自带的一个上传类,把它改成删除类。
1 /* 在这两句之后添加 */ 2 item.appendChild(img); 3 item.appendChild(icon); 4 5 //增加删除按钮 6 item.appendChild($("<span class='delbtn' url='" + list[i].url + "'>✖</span>").click(function (){ 7 var del = $(this); 8 try { 9 window.event.cancelBubble = true; //停止冒泡 10 window.event.returnValue = false; //阻止事件的默认行为 11 window.event.preventDefault(); //取消事件的默认行为 12 window.event.stopPropagation(); //阻止事件的传播 13 } finally { 14 if (!confirm("确定要删除吗?")) return; 15 $.post(editor.getOpt("serverUrl") + "?action=deleteimage", { "path": del.attr("url") }, 16 function (result) { 17 if (result.indexOf("文件删除成功")>-1) { 18 del.parent().remove(); 19 } 20 21 else alert(result); 22 }); 23 } 24 })[0]); 25 26 27 28 /* 在这一句之前添加 */ 29 this.list.insertBefore(item, this.clearFloat);
在image.css的文件中加入样式,删除的图标更好看一些,我是放在最后。注:样式是参考另外一篇文章。
1 /* 在线管理删除按钮样式 */ 2 #online li .delbtn { 3 position: absolute; 4 top: 0; 5 right: 0; 6 border: 0; 7 z-index: 3; 8 color: #ffffff; 9 display: inline; 10 font-size: 12px; 11 line-height: 10.5px; 12 padding:3px 5px; 13 text-align: center; 14 background-color: #d9534f; 15 }
删除类,是自己新建了一个类,放在net/app_code中 DeleteImageHandler.cs
1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text.RegularExpressions; 6 using System.Web; 7 8 /// <summary> 9 /// UploadHandler 的摘要说明 10 /// </summary> 11 public class DeleteImageHandler : Handler 12 { 13 14 public DeleteConfig deleteConfig { get; private set; } 15 public DeleteResult Result { get; private set; } 16 17 public DeleteImageHandler(HttpContext context, DeleteConfig config) 18 : base(context) 19 { 20 this.deleteConfig = config; 21 this.Result = new DeleteResult() { State = DeleteState.Success }; 22 } 23 24 public override void Process() 25 { 26 27 try 28 { 29 string realpath = Server.MapPath("/ueditor")+"/net/"+deleteConfig.PathFormat; 30 31 bool bl = System.IO.File.Exists(realpath); 32 if (bl) 33 { 34 System.IO.File.Delete(realpath); 35 Result.State = DeleteState.Success; 36 37 } 38 else 39 { 40 Result.State = DeleteState.Fail; 41 } 42 43 44 } 45 catch (Exception e) 46 { 47 Result.State = DeleteState.Fail; 48 // Result.ErrorMessage = e.Message; 49 } 50 finally 51 { 52 WriteResult(); 53 } 54 } 55 56 private void WriteResult() 57 { 58 this.WriteJson(new 59 { 60 state = GetStateMessage(Result.State), 61 // url = Result.Url, 62 //title = Result.OriginFileName, 63 // original = Result.OriginFileName, 64 // error = Result.ErrorMessage 65 }); 66 } 67 68 private string GetStateMessage(DeleteState state) 69 { 70 switch (state) 71 { 72 case DeleteState.Success: 73 return "文件删除成功"; 74 75 case DeleteState.Fail: 76 return "文件删除失败,请检查图片路径是否存在"; 77 } 78 return "未知错误"; 79 } 80 81 82 } 83 84 public class DeleteConfig 85 { 86 /// <summary> 87 /// 文件命名规则 88 /// </summary> 89 public string PathFormat { get; set; } 90 91 92 93 } 94 95 public class DeleteResult 96 { 97 public DeleteState State { get; set; } 98 // public string Url { get; set; } 99 //public string OriginFileName { get; set; } 100 101 //public string ErrorMessage { get; set; } 102 } 103 104 public enum DeleteState 105 { 106 Success = 0, 107 Fail = -1, 108 109 }
到了这里已经结束啦,以供参考。如果只是我,肯定不会想到用这样的方法的,还得感谢我的一位朋友,我才能做好这个模块,毕竟我也只是个刚进公司的新人,会的也没那么多,如果没有大神的指点,也不清楚到底会不会走技术这一条路。