[项目过程中所遇到的各种问题记录]编辑器篇——FCKeditor自定义上传路径配置...
????? 在上一篇文章中,我介紹了FCKeditor的一些相關(guān)知識以及我在使用過程中碰到的一些問題及解決方案,今天這篇則是主要記錄如何通過FCKeditor來分類管理上傳的文件。
以下是本文所要介紹的內(nèi)容:
1、FCKeditor上傳文件分析
2、FCKeditor上傳文件路徑分類配置實現(xiàn)
?
一、FCKeditor上傳文件分析
???? 使用過FCKeditor的朋友肯定都知道,FCKeditor的文件上傳的文件都是保存在自定義的目錄下,而且保存的目錄僅僅按照文件類型進行了劃分,只有4個:file、flash、image和media(FCKeditor有內(nèi)置的管理器可以自由建立文件夾,但是由于并不安全所以這塊被我關(guān)閉掉了,用戶所要做的事情就是上傳),而實際的應(yīng)用過程中我們不可能將這些同類型的文件放在一個文件夾下,我們需要有特殊的邏輯來存放,比如:新聞相關(guān)文件是按照月份來存放、博客資源是按照博主的用戶名來存放等等,這時FCKeditor的基本上就滿足不了我這個需求了,所以就需要研究FCKeditor的源碼進行簡單修改來達到我們的目的。
???? FCKeditor主要由2部分組成,一部分就是FCKeditor的HTML包,包含了JS、HTML頁面主要負責與客戶端的交互,而另一部分就是具體的C#程序集FredCK.FCKeditorV2。
其中FCKeditor的上傳部分主要也分2個部分:
1、面向客戶端UserControl——config.ascx(存放于fckeditor\editor\filemanager\connectors\aspx\下)
2、服務(wù)器端負責上傳的具體類:FredCK.FCKeditorV2.FileBrowser.Config.cs
先看下FredCK.FCKeditorV2中的類關(guān)系圖:
這張類圖中有關(guān)上傳文件的類主要有3個FileWorkerBase、TypeConfig和Config,下面分別來介紹下這3個類:
1、FileWorkerBase,一個抽象類,主要負責文件管理,其中有關(guān)文件上傳的主要是FileUpload(負責文件上床)和ServerMapFolder(定位服務(wù)器上路徑地址)這2個方法(具體有關(guān)內(nèi)容可以自行查看源碼)。
2、TypeConfig,這個類主要用于輔助FileWorkerBase,為FileWorkerBase提供所需路徑。
3、Config,用戶控件的具體后臺類,負責與前臺用戶控件交互。
本來我的設(shè)想是通過FCKeditor自身的類來實現(xiàn)的,這樣只需在實際頁面控件上設(shè)置相應(yīng)的屬性既可,可惜在實際的研究過程中發(fā)現(xiàn)不可行,因為FCKeditor有關(guān)文件管理這塊是和其控件類是分開的,文件的上傳需要通過FileWorkerBase來實現(xiàn),所以FCKeditor控件上配置的屬性在FileWorkerBase是無法獲取到的,所以還是得從上面所說的3個類來做文章。
?
二、FCKeditor上傳文件路徑分類配置實現(xiàn)
???? 現(xiàn)在就要相辦法來實現(xiàn)上傳文件路徑的配置,首先我們可以知道FileWorkerBase.FileUpload這個方法是用來上傳文件的,其中:
string sServerDir = this.ServerMapFolder(resourceType, currentFolder, isQuickUpload);這句代碼是用來獲取保存的路徑,知道了這點我們就可以想辦法把currentFolder這個變量的值進行更換,改成我們所配置的路徑。
這時就需要用戶控件Config出場了,因為這個用戶控件主要就是暴露給客戶端,負責和客戶端交互,我們查看下其代碼可以發(fā)現(xiàn)在其ascx中包含了一段服務(wù)器腳本代碼,其中有個方法SetConfig就是用來設(shè)置上傳文件允許的類型、上傳的默認路徑的,所以我們只需在這里新增我們的配置。
首先,在FredCK.FCKeditorV2.FileBrowser.Config.cs中新增一個屬性:
public string UploadPath { get; set; }這個屬性是用來設(shè)置存放上傳文件的具體個性化路徑,與配置的FCKeditor:UserFilesPath不沖突,因為FCKeditor:UserFilesPath是設(shè)置存放所有文件的根路徑,如:“~/Upload/”,而UploadPath則是配置基于上傳根目錄的個性化路徑,如:“News”等,增加好這個屬性后就可以在ascx文件中增加具體的配置路徑,如:
UploadPath = "News/" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString();我這邊配置的是一個新聞配置,按照年月分隔。
這步做完并沒有結(jié)束,還需要做2步操作:
1、關(guān)閉文件瀏覽器,在fckconfig.js文件中將FCKConfig.LinkBrowser、FCKConfig.ImageBrowser和FCKConfig.FlashBrowser都置為false,這樣上傳圖片只能通過下圖中上傳選項卡進行上傳(也就是fckeditor代碼中的快速上傳—QuickUpload),同時無法查看服務(wù)器中的文件:
2、更改路徑獲取代碼,在TypeConfig類中將GetQuickUploadPath方法改為以下代碼:
internal string GetQuickUploadPath() {string path = this.FileWorker.Config.UploadPath;if (_QuickUploadPath == null && string.IsNullOrEmpty(path) == false)_QuickUploadPath = QuickUploadPath.Replace("%UserFilesPath%", System.IO.Path.Combine(this.FileWorker.Config.UserFilesPath, path));return _QuickUploadPath; }主要將path獲取改成了從用戶控件Config中獲取UploadPath,然后進行組合這樣組合出來的路徑就是:/Upload/News/201012
?
這樣就完成了fckeditor上傳文件路徑分類配置了,目的是達到了,不過還有個瑕疵就是如果要新增一種路徑則需要網(wǎng)站中新增一個fckeditor的HTML包,在其中的fckeditor\editor\filemanager\connectors\aspx\config.ascx控件中修改一下UploadPath配置,如果各位還有其他解決辦法歡迎分享!
?
源碼下載:點我下載(直接瀏覽網(wǎng)站根目錄下Default.aspx既可)
?
話說,各位看過的朋友如果覺得本文對您還有點用,或者覺得本文還有價值的話,麻煩將鼠標移到【推薦】上,幫我點擊下,非常非常的感謝!
?
項目過程中所遇到的各種問題記錄
編輯器篇:
??????? FCKeditor相關(guān)知識及各種常見使用問題
??????? FCKeditor自定義上傳路徑配置
圖表篇:
??????? 有關(guān)MSChart的一些小技巧
??????? asp.net上不錯的圖表選擇—FunsionCharts
ORM篇:
??????? 使用NHibernate配置對象實體的一些小問題
??????? 有關(guān)NHibernate查詢封裝
部署篇:
??????? 項目部署過程中那些糾結(jié)的問題-IIS
??????? 項目部署過程中那些糾結(jié)的問題-SQLServer
工具篇:
??????? .NET開發(fā)時常用的工具類庫(附一個C#和VB.NET之間互傳的小工具)
總結(jié)
以上是生活随笔為你收集整理的[项目过程中所遇到的各种问题记录]编辑器篇——FCKeditor自定义上传路径配置...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给wordpress最新文章添加“new
- 下一篇: 笔记本关于虚拟机桥接小问题