UEditor1.4.3.3实现图片上传、删除功能
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文本编辑器里面自带的一个上传类,把它改成删除类。
- /* 在这两句之后添加 */
- item.appendChild(img);
- item.appendChild(icon);
- //增加删除按钮
- item.appendChild($("<span class='delbtn' url='" + list[i].url + "'>✖</span>").click(function (){
- var del = $(this);
- try {
- window.event.cancelBubble = true; //停止冒泡
- window.event.returnValue = false; //阻止事件的默认行为
- window.event.preventDefault(); //取消事件的默认行为
- window.event.stopPropagation(); //阻止事件的传播
- } finally {
- if (!confirm("确定要删除吗?")) return;
- $.post(editor.getOpt("serverUrl") + "?action=deleteimage", { "path": del.attr("url") },
- function (result) {
- if (result.indexOf("文件删除成功")>-) {
- del.parent().remove();
- }
- else alert(result);
- });
- }
- })[]);
- /* 在这一句之前添加 */
- this.list.insertBefore(item, this.clearFloat);
在image.css的文件中加入样式,删除的图标更好看一些,我是放在最后。注:样式是参考另外一篇文章。
- /* 在线管理删除按钮样式 */
- #online li .delbtn {
- position: absolute;
- top: ;
- right: ;
- border: ;
- z-index: ;
- color: #ffffff;
- display: inline;
- font-size: 12px;
- line-height: .5px;
- padding:3px 5px;
- text-align: center;
- background-color: #d9534f;
- }
删除类,是自己新建了一个类,放在net/app_code中 DeleteImageHandler.cs
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text.RegularExpressions;
- using System.Web;
- /// <summary>
- /// UploadHandler 的摘要说明
- /// </summary>
- public class DeleteImageHandler : Handler
- {
- public DeleteConfig deleteConfig { get; private set; }
- public DeleteResult Result { get; private set; }
- public DeleteImageHandler(HttpContext context, DeleteConfig config)
- : base(context)
- {
- this.deleteConfig = config;
- this.Result = new DeleteResult() { State = DeleteState.Success };
- }
- public override void Process()
- {
- try
- {
- string realpath = Server.MapPath("/ueditor")+"/net/"+deleteConfig.PathFormat;
- bool bl = System.IO.File.Exists(realpath);
- if (bl)
- {
- System.IO.File.Delete(realpath);
- Result.State = DeleteState.Success;
- }
- else
- {
- Result.State = DeleteState.Fail;
- }
- }
- catch (Exception e)
- {
- Result.State = DeleteState.Fail;
- // Result.ErrorMessage = e.Message;
- }
- finally
- {
- WriteResult();
- }
- }
- private void WriteResult()
- {
- this.WriteJson(new
- {
- state = GetStateMessage(Result.State),
- // url = Result.Url,
- //title = Result.OriginFileName,
- // original = Result.OriginFileName,
- // error = Result.ErrorMessage
- });
- }
- private string GetStateMessage(DeleteState state)
- {
- switch (state)
- {
- case DeleteState.Success:
- return "文件删除成功";
- case DeleteState.Fail:
- return "文件删除失败,请检查图片路径是否存在";
- }
- return "未知错误";
- }
- }
- public class DeleteConfig
- {
- /// <summary>
- /// 文件命名规则
- /// </summary>
- public string PathFormat { get; set; }
- }
- public class DeleteResult
- {
- public DeleteState State { get; set; }
- // public string Url { get; set; }
- //public string OriginFileName { get; set; }
- //public string ErrorMessage { get; set; }
- }
- public enum DeleteState
- {
- Success = ,
- Fail = -,
- }
到了这里已经结束啦,以供参考。如果只是我,肯定不会想到用这样的方法的,还得感谢我的一位朋友,我才能做好这个模块,毕竟我也只是个刚进公司的新人,会的也没那么多,如果没有大神的指点,也不清楚到底会不会走技术这一条路。
UEditor1.4.3.3实现图片上传、删除功能的更多相关文章
- 我需要在Web上完成一个图片上传的功能
我需要在Web上完成一个图片上传的功能. 这个页面需要能从手机中选择图片上传. 首先,这个页面是从微信上面触发的,所以修改了微信的的入口地址,增加了身份识别号作为传参. 跳转到页面的时候,页面先检查身 ...
- 包含修改字体,图片上传等功能的文本输入框-Bootstrap
通过jQuery Bootstrap小插件,框任何一个div转换变成一个富文本编辑框,主要特色: 在Mac和window平台下自动针对常用操作绑定热键 可以拖拽插入图片,支持图片上传(也可以获取移动设 ...
- rails使用bootstrap3-wysiwyg可视化编辑器并实现自定义图片上传插入功能
之前在rails开发中使用了ckeditor作为可视化编辑器,不过感觉ckeditor过于庞大,有很多不需要的功能,而且图片上传功能不好控制不同用户可以互相删除图片,感觉很不好.于是考虑更改可视化编辑 ...
- ASP利用xhEditor编辑器实现图片上传的功能。
本人这几天在做一个软件,无意中用到xhEditor在线编辑器,这个编辑器虽然看着比较简单,但功能非常强大,大家可以去官网上查看,废话不说了. 这篇文件主要是实现在ASP环境中利用xhEditor编辑器 ...
- 我需要在Web上完成一个图片上传的功能(+2)
增加一个页面,用于判断传参是否正确. @{ //判断是否具备会员参数 if (UrlData.Count > 0) { Session["Arg ...
- 我需要在Web上完成一个图片上传的功能后续(+1)
微信入口施工完成.关键字识别中增加了本次活动的"关键字",在系统中增加了链接.不过,由于地址包含私密关键参数,这里隐藏,敬请原谅. 下一步,微信链接的地址页面是要对微信用户的信息进 ...
- jquery Ajax 实现图片上传的功能。
$('#image').on('change', function () { var url = ""; var form = new FormDa ...
- Ueditor1.4.3.3+springMvc+maven 实现图片上传
前记:由于项目中需要有一个新增数据并且要能支持表格图片上传的功能.使用了ueditor控件.为实现这个功能,从一开始什么都看不懂,到一直连着弄了5天,总算是有了眉目.在此记录一下以便能帮到可以和我一样 ...
- 关于editor网页编辑器ueditor.config.js 配置图片上传
最近公司项目在做一个门户网站,其中新闻和简介等部分使用到了ueditor编辑器,但是上级明确指示需要图片上传这个功能,这时却发现图片上传功能不能正常使用,上传时一直报错,网上收了好几个处理办法,都说的 ...
随机推荐
- LVS原理讲解
一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身 ...
- yii2之数据验证
一.场景 什么情况下需要使用场景呢?当一个模型需要在不同情境中使用时,若不同情境下需要的数据表字段和数据验证规则有所 不同,则需要定义多个场景来区分不同使用情境.例如,用户注册的时候需要填写email ...
- PHP的取整函数
PHP的取整函数有四个,分别是ceil.floor.round和intval,下面对它们进行一一介绍: 1. ceil(x):向上舍入为最接近的整数. 返回不小于 x 的下一个整数,x 如果有小数部分 ...
- 简易RPC框架-上下文
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 主键乱序插入对Innodb性能的影响
主键乱序插入对Innodb性能的影响 在平时的mysql文档学习中我们经常会看到这么一句话: MySQL tries to leave space so that future inserts do ...
- Windows Nodejs 安装教程
Windows Nodejs 安装教程 1: 访问官方地址 https://nodejs.org/en/download/ 2: 解压压缩包文件到指定目录 我直接把压缩包解压到C盘根目录下,并将文件夹 ...
- 0_Simple__simpleAssert + 0_Simple__simpleAssert_nvrtc
在核函数中使用强制终止函数 assert().并且在静态代码和运行时编译两种条件下使用. ▶ 源代码:静态使用 #include <windows.h> #include <stdi ...
- cookie 子域名可以读父域名中的cookie
cookie 子域名可以读父域名中的cookie 如在 .ping.com域下注入cookie,则该子域下的网页如p1.ping.com.p2.ping.com 都能读取到cookie信息 path的 ...
- VUE插件-图片濑加载
1. cnpm install vue-lazyload 2.main.js import vue-lazyload from 'vue-lazyload' Vue.use(vue-lazylo ...
- Problem J: 求个最大值
Problem J: 求个最大值 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 871 Solved: 663[Submit][Status][Web ...