关于editor网页编辑器ueditor.config.js 配置图片上传

最近公司项目在做一个门户网站,其中新闻和简介等部分使用到了ueditor编辑器,但是上级明确指示需要图片上传这个功能,这时却发现图片上传功能不能正常使用,上传时一直报错,网上收了好几个处理办法,都说的不够详细明了,突然发现ueditor这么强大的工具在开发过程中的致命盲点,很纠结,最终经过很久的纠结和苦思冥想终于解决了该问题,以下是关于ueditor 在web 2.0版本下的问题解决思路和方法,因为经过测试 网上下载的ueditor编辑器在4.0下 问题不大。好了言归正传,首先亮出ueditor在我的项目的结构位置:

,这里先说明一下 标示的这些地方的作用,红框标示的是Ueditor整个文件的位置,红线标示的 是 配置过程中将会用到的各部分,接下来会一一讲解。接下来在亮出原始版本ueditor结构位置:

原始版本ueditor是不能正常上传图片的,之所以晒出这两张图片是为了更好的进行对比 找出 问题所在,便于分析 你的问题出在哪里。首先问题可以很明确的是程序编译没有通过,你按F6进行编译他提示生成成功,其实不然,接下来我们就来分析哪些地方造成的编译没有通过

我们先从上面带星号这个类开始讲:请看以下图片:,如果不出意外,你正在有这样的疑问,这个错误是怎么产生的,因为我那时就纠结了很久,如果你细心的话你会发现第一张图片中该文件已经改名为UploaderFile,这是当时最先想到的解决办法,以为改个名字就能解决 该报错原因,结果我错了,(当然改了名字也不影响),那么问题出在哪里呢?其实问题出在头部引用红线位置就是问题所在,2.0是不支持Linq的 所以 这句要删掉,同时引用Linq的还有Config.cs 然后就是上面两句话,可以看出下面一句话已经在报错了,这句话为何报错?因为看程序结构你可以看出Config.cs类和Uploader.cs类本来就在同一个项目中,这里在处理程序中再次引用就相当于原本就编译了,再编译一次,所以提示同时存在于.....两个地方,而为何4.0不报错,我想应该是4.0在升级后处理了这个逻辑吧!这三句话都必须删掉

接下来我把imageUp.ashx的代码贴出来,只要你是ueditor1_3_5-utf8-net这个版本 就没有问题。

 1 <%@ WebHandler Language="C#" Class="imageUp" %>
 2 using System;
 3 using System.Web;
 4 using System.IO;
 5 using System.Collections;
 6 
 7 public class imageUp : IHttpHandler
 8 {
 9     public void ProcessRequest(HttpContext context)
10     {
11         context.Response.ContentType = "text/plain";
12 
13         //上传配置
14         int size = 2;           //文件大小限制,单位MB                             //文件大小限制,单位MB
15         string[] filetype = { ".gif", ".png", ".jpg", ".jpeg", ".bmp" };         //文件允许格式
16 
17 
18         //上传图片
19         Hashtable info = new Hashtable();
20         Uploader up = new Uploader();
21         
22         string pathbase = null;
23         int path=Convert.ToInt32( up.getOtherInfo(context, "dir"));
24         if (path == 1)
25         {
26             pathbase = "upload/";                  
27             
28         }else{
29             pathbase = "upload1/";
30         }
31         
32         info = up.upFile(context, pathbase, filetype, size);                   //获取上传状态
33         
34         string title = up.getOtherInfo(context, "pictitle");                   //获取图片描述
35         string oriName = up.getOtherInfo(context, "fileName");                //获取原始文件名
36 
37 
38         HttpContext.Current.Response.Write("{'url':'" + info["url"] + "','title':'" + title + "','original':'" + oriName + "','state':'" + info["state"] + "'}");  //向浏览器返回数据json数据
39     }
40 
41     public bool IsReusable
42     {
43         get
44         {
45             return false;
46         }
47     }
48 
49 }

 ,接下来在看web.config文件,原始的文件时这样的:,其实这个文件 在整个问题中没有太大影响(也就是说不会影响图片上传),但是为何又要单独讲一下呢?因为在下这个亏吃的有点大,该文件中targetFramework="4.0"这句话 误导了我,以至于我一直以为必须要这句话才能在让该插件正常运行,也就是说,我这里是2.0的 就要把4.0改成2.0 ,网上还有人说把requestValidationMode这部分删除就行了,等等 到最后我才知道,所有报错的地方 都只是2.0配置文件不支持的原因,直接删除即可,当然不删也不影响,我这里是删除了的,因为我是一个 完美主义者,不喜欢看到有报错O(∩_∩)O哈哈~。

好了,进入正题,以上只是解决编译不通过的问题,其实最为重要的是以下部分ueditor.config.js 这个文件 才是核心啊,现在想想 我被坑了,而且还坑的不浅 我擦!!!

先来看看 原始的 文件在来看看 我配置好的文件:来讲讲红色框的问题,先看原始的图片的最上部分框和我配置好的第一张图片的框,观察window.UEDITOR_HOME_URL = "/ManagePage/ueditor"  这部分,原始版本没有配置,我这里添了的,他的作用是确定ueditor这个插件在你的项目中的位置,没有这句话会报很多错,错误的中心都是找不到某某文件,现在想想,这句话才是核心啊,

在来看看原始图片的第二个框:这部分就是配置图片上传的地方,注意看  原始版本有些地方被注解了,这些注解会影响图片上传弹出框的效果:,这就是被注解的效果,你只用将这部分的注解都去掉就行了,在看看原始图片的第三个框:其实没有作用,这部分可以根据你的需求 选择是否注解,这里不影响图片上传,

好了,到此为止 如果你还报以下错误:,那么你就可以在imageUp设置断点监视以下,简单的说一下这个错的原因,500 Internal.....错误,通常我们会联想到 编译错误,刚开始的时候我也想到了这个原因,只是不知道如何处理,后来,我们 头 直接把error 后面那部分复制到浏览器的地址中,执行如图: 根据返回来的 这些字符 我们就能推断 错误中下面那部分的 原因了,是因为上传成功后url 、title等都为空造成的,解决办法是:在imageUp 设置断点监视以下:我的结果是:根据图中红色框部分,我们可以推测:传递过来的参数是upload1 字符串,这里他进行 Convert.toInt32 当然会报错,就造成了 上面上传报错的情况,解决办法是:直接把上传过来的参数作为存储的地址即可。至此  大功告成了。

如果 你的图片上传还出问题 就在百度中收索:ueditor1_3_5-utf8-net .netFramwork 2.0版本 在csdn中 我上传了 2.0 和 4.0 两个版本。4.0的 就收ueditor1_3_5-utf8-net .netFramwork 4.0版本   里面有完整配置。

 

posted @ 2014-03-28 17:56  李信华  阅读(3526)  评论(0编辑  收藏  举报