最近公司項目在作一個門戶網站,其中新聞和簡介等部分使用到了ueditor編輯器,可是上級明確指示須要圖片上傳這個功能,這時卻發現圖片上傳功能不能正常使用,上傳時一直報錯,網上收了好幾個處理辦法,都說的不夠詳細明瞭,忽然發現ueditor這麼強大的工具在開發過程當中的致命盲點,很糾結,最終通過好久的糾結和苦思冥想終於解決了該問題,如下是關於ueditor 在web 2.0版本下的問題解決思路和方法,由於通過測試 網上下載的ueditor編輯器在4.0下 問題不大。好了言歸正傳,首先亮出ueditor在個人項目的結構位置:web
,這裏先說明一下 標示的這些地方的做用,紅框標示的是Ueditor整個文件的位置,紅線標示的 是 配置過程當中將會用到的各部分,接下來會一一講解。接下來在亮出原始版本ueditor結構位置:json
原始版本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這個插件在你的項目中的位置,沒有這句話會報不少錯,錯誤的中心都是找不到某某文件,如今想一想,這句話纔是核心啊,url
在來看看原始圖片的第二個框:這部分就是配置圖片上傳的地方,注意看 原始版本有些地方被註解了,這些註解會影響圖片上傳彈出框的效果:,這就是被註解的效果,你只用將這部分的註解都去掉就好了,在看看原始圖片的第三個框:其實沒有做用,這部分能夠根據你的需求 選擇是否註解,這裏不影響圖片上傳,spa
好了,到此爲止 若是你還報如下錯誤:,那麼你就能夠在imageUp設置斷點監視如下,簡單的說一下這個錯的緣由,500 Internal.....錯誤,一般咱們會聯想到 編譯錯誤,剛開始的時候我也想到了這個緣由,只是不知道如何處理,後來,咱們 頭 直接把error 後面那部分複製到瀏覽器的地址中,執行如圖:
根據返回來的 這些字符 咱們就能推斷 錯誤中下面那部分的 緣由了,是由於上傳成功後url 、title等都爲空形成的,解決辦法是:在imageUp 設置斷點監視如下:個人結果是:
根據圖中紅色框部分,咱們能夠推測:傳遞過來的參數是upload1 字符串,這裏他進行 Convert.toInt32 固然會報錯,就形成了 上面上傳報錯的狀況,解決辦法是:
直接把上傳過來的參數做爲存儲的地址便可。至此 大功告成了。.net
若是 你的圖片上傳還出問題 就在百度中收索:ueditor1_3_5-utf8-net .netFramwork 2.0版本 在csdn中 我上傳了 2.0 和 4.0 兩個版本。4.0的 就收ueditor1_3_5-utf8-net .netFramwork 4.0版本 裏面有完整配置。