【.net】Ueditor中图片上传和图片回显路径的设置
在csdn六百多天的游俠今日現身江湖。
問題發生的背景:
所有項目代碼中,圖片上傳都是固定存到一個圖片專屬的盤符,這樣就可以整個盤符對所有圖片進行備份以防丟失。
但是!有一個站點所引用的百度編輯器(主要用來發送通知)則不然,每次上傳通知,內容中的圖片、文件都傳到了項目路徑下,當我項目重新發布一個版本后,上傳生成的圖片文件夾就沒了…
幸好每次更換項目代碼都會把之前的那個備份一下,然后又得手動把之前的圖片文件夾復制粘貼到新版本的項目代碼中。但總是會忘記的…好幾次同事打開通知都顯示不出歷史圖片后,決心修改Ueditor的上傳和回顯路徑,改到專門保存圖片的盤符下。
1、我的環境
先說一下我的S操作所在的本地環境吧
- Window10
- IIS 10.0
- Visual Studio 2015
- SQL Server 2014 Management Studio
2、修改需求
在查找解決方案前,我腦海中都會先大致給預設一個修改需求,帶著修改要求去找解決方案,然后在過程中盡量往預設的修改需求靠攏,實在靠攏不了也能合理地改變嘛。
因為在正式環境中代碼和圖片是放在兩個不同盤符的,我本地就按照它上面來。
主要就是要實現,圖片上傳路徑從項目包所在路徑換成圖片保存的另一個盤符。
- 代碼包放在D盤
這個是引入的Ueditor包的路徑,menu是我的項目包名稱
- 圖片路徑設置在F盤
image就是我編輯器要上傳的圖片保存文件夾
- IIS設置個虛擬路徑
在站點下設置虛擬路徑,路徑指向保存圖片的專屬盤符F盤。(應該沒有不會設虛擬路徑的小可愛吧?)
其實路徑也可以在Ueditor的路徑配置文件中,寫死成某一個盤符的路徑,以后修改盤符的時候修改配置文件就行了。(如下SSR君的博客所分享)
但我比較傾向于使用站點下的虛擬目錄,修改虛擬目錄指向的物理路徑就行了,也方便以后其他圖片要上傳到圖片保存專屬盤符,直接使用虛擬目錄img上傳就行。
其實都差不多,自己權衡考慮吧~
3、啃文檔
當然,在啃文檔之前還是先把項目中的Ueditor引用的代碼掃了幾眼的,發現…LZ看不懂啊,果斷乖乖先去搜文檔啃幾口填填肚子。
①源文件
(Ueditor的源文件一定要看,很詳細地寫了PHP、ASP、JSP要怎么配置試用,怎么二次開發,還有一些常見的問題等。)
限定君: 百度編輯器官方文檔
②他人博客
(搜索關鍵詞Ueditor上傳路徑配置、Ueditor自定義上傳地址等等啦,相信各位已經得心應手的)
- SSR君:https://www.cnblogs.com/mazhiyuan/p/5275964.html
- SR君: https://www.cnblogs.com/flower1990/p/5773068.html
- R君:https://blog.csdn.net/u011546347/article/details/79550226
(玩陰陽師的都懂的,限定就是稀有;SSR君就是對我解決問題幫助最大的;SR君其次,我下載他的demo下來后無法解壓,顯示解文件損壞;R君幫助不是很大,但可以稍微參考一下,因為他里邊是java的栗子…)
4、試錯進行時
在啃了一兩天文檔后,對編輯器的配置和調用了解了個大概,接下來就是動手時刻。
①Ueditor,net目錄內的源碼結構
②嘗試修改UEditor 后端的配置文件config.json
就是這兩個配置項,不管我怎么改【imagePathFormat】,上傳的圖片都是在項目路徑下面蹦跶,要么就是前端的編輯界面崩了。
按照別人的步驟修改也是一樣…
- 圖4-1:圖片無法顯示,上傳還是在項目內
(寫入數據庫的回顯地址沒有該圖片,上面已經說了,我站點的虛擬目錄img指向的是F盤,而圖片上傳都在D盤的項目目錄下,當然無法回顯!)
- 圖4-2:直接連單圖上傳按鈕都灰掉了…
(對【imagePathFormat】寫了一些無法辨認的路徑)
- 圖4-3:文件訪問出錯
(路徑傳給UploadHandler時,在磁盤上找不到所給路徑【localPath】)
- 圖4-4:數據庫傳回來的回顯路徑
這只是一小部分測試歷史,其他的一些最新的不可看內容就不方便放出來了,能用的路徑都嘗試了一遍(笨鳥先飛~)
其實就是config配置文件中【imageUrlPrefix】與【imagePathFormat】的拼接。
諸如此類的問題層出不窮…(扶額扶得發際線越加危險)
③由此可得
不過還是有所收獲的,也就是說:
- 【imagePathFormat】是圖片的上傳路徑
在config配置文件內改什么都是沒用的,都只會上傳到項目路徑下
- 入庫的圖片/路徑圖片回顯地址其實是
【imageUrlPrefix】+【imagePathFormat】的拼接(其實回顯完全可以不寫,反正寫入的回顯地址為上傳地址也沒影響,都是在項目內…在項目外的話肯定是要寫的,不然回顯不了,如上錯誤圖4-1)
- 只能在另外的方法中動刀了,下一節UploadHandler
測試無果后中場休息一天,先做做別的事說不準就有靈感了。
5、UploadHandler文件的修改
(見證奇跡的時刻!暴露年齡的話梗…)
要修改路徑,最重要的方法是UploadHandler!UploadHandler!UploadHandler!說三遍!
在借鑒無果的情況下,還是自己打斷點調式一下吧!
①調試前
先來理一下UploadHandler和config的關系
②調試中
結果讓我一目了然:【savePath】、【localPath】、【Result.Url】這三個地址的數據返回讓我豁然開朗!茅塞頓開!
- 圖5-1:【savePath】的返回地址
地址為【imagePathFormat】傳過來的,目前一切還很正常
- 圖5-2:【localPath】返回的地址請看!
居然多了前面一串項目的路徑(還記得前面吧?我把項目放在了D盤)!難怪啊!!!我在config.json怎么改都沒用啊,你在UploadHandler中給添加了前綴!
為什么如此呢?可去了解一下Server.MapPath這方法的使用:返回與WEB服務器上的指定虛擬路徑相對應的物理文件路徑
- 圖5-3:最后看一下地址【Result.Url】
【Result.Url】的地址=【savePath】獲取的地址=【imagePathFormat】設置的地址
③調試后
是不是豁然開朗!!!由此可見
- 【localPath】為編輯器的圖片上傳地址!
(來來來!給它們做做文章)
6、最后的修改,成果展現
- 圖6-1:修改圖片紅框兩個地方
var localPath = Server.MapPath("/img")+ savePath、“imageUrlPrefix”:“http://localhost:9011/img”,
(就修改這么兩個個地方!!膝蓋微微發軟…)
如果覺得在方法里面修改,后面路徑名要變的話,還要重新發布項目很麻煩,可以參照上面SSR君的博客,在config.json中定義一個參數保存路徑名。
不過其實都差不多,設置了一個img虛擬目錄后,img可以不變的,其他目錄地址是可以隨便變化的。(不過,存放圖片的路徑還是不要輕易大動,牽涉的項目中上傳路徑太多了。)
- 圖6-2:編輯界面
哈哈哈哈哈哈!!上傳成功且成功回顯!
- 圖6-3:保存圖片的F盤中
有圖片!!成功傳到了D盤外的非項目所在盤符。
- 圖6-4:最后查看一下數據庫傳入的回顯HTML中的src
站點:端口/虛擬目錄/虛擬目錄指向的物理路徑(即【imagePathFormat】)
要問怎么把html傳到數據庫的,此內容不在今日所說范圍。
至此上傳和回顯的的路徑修改已完成!還剩下一些數據庫中歷史回顯路徑的批量修改,今晚先加雞腿,nice~
我只負責維護,如果大刀闊斧,那就離重構不遠了…大門在那邊,慢走不送~
溜了溜了~
總結
以上是生活随笔為你收集整理的【.net】Ueditor中图片上传和图片回显路径的设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 的各种 signal
- 下一篇: 图灵 计算机 ppt,turing ma