国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

HTML編輯器FCKeditor .NET的配置、擴(kuò)展與安全性經(jīng)驗(yàn)交流

2024-07-21 02:53:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
FCKeditor是使用非常廣泛的HTML編輯器,本文從 ASP.NET 的使用場(chǎng)景對(duì) FCKeditor 與 FCKeditor.NET 的配置、功能擴(kuò)展(如自定義文件上傳子目錄、自定義文件名、上傳圖片的后期處理等)、以及安全性進(jìn)行初步的闡述。
 
前言 
FCKeditor是使用非常廣泛的HTML編輯器,本文從 ASP.NET 的使用場(chǎng)景對(duì) FCKeditor 與 FCKeditor.NET 的配置、功能擴(kuò)展(如自定義文件上傳子目錄、自定義文件名、上傳圖片的后期處理等)、以及安全性進(jìn)行初步的闡述。 

希望能幫助有同樣需求的同仁節(jié)省一點(diǎn)時(shí)間;也希望各位能指正其中的不足。謝謝。 

一、自定義 FCKeditor 的 BasePath 
BasePath 即FCKeditor在網(wǎng)站中的相對(duì)路徑,默認(rèn)值是 /fckeditor/,最好在Web.config appSettings中對(duì)其進(jìn)行配置: 

<add key="FCKeditor:BasePath" value="/FCKeditor_2.6.3/"/> 

這樣做有諸多優(yōu)點(diǎn): 

開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境不同,開(kāi)發(fā)環(huán)境一般是http://localhost/xxx.com/這種情況下FCKeditor就得放在一個(gè)虛擬目錄http://localhost/fckeditor/中,若涉及多個(gè)網(wǎng)站的開(kāi)發(fā),而各網(wǎng)站的FCKeditor有差別時(shí),這樣顯然不是最優(yōu); 
而且因?yàn)槲锢砟夸浗Y(jié)構(gòu)與邏輯目錄結(jié)構(gòu)不同,也會(huì)有發(fā)生錯(cuò)誤的隱患; 
而如果采用Web.config的配置,就可以在開(kāi)發(fā)環(huán)境采用不同的配置,F(xiàn)CKeditor的物理路徑與生產(chǎn)環(huán)境保持一致; 
當(dāng)升級(jí)FCKeditor時(shí),只需要將新版本的FCKeditor放在相應(yīng)版本號(hào)的目錄里,修改一下配置即可。這樣可以解決因?yàn)殪o態(tài)資源的客戶(hù)端緩存問(wèn)題,不同用戶(hù)出現(xiàn)不同的錯(cuò)誤的問(wèn)題; 
可以直觀地看到自己的FCKeditor的版本號(hào)。 

二、配置文件上傳的目錄 
FCKeditor的文件上傳(如圖片上傳)目錄可以通過(guò)Web.config appSettings進(jìn)行配置,如: 

<add key="FCKeditor:UserFilesPath" value="/UploadFile/FCKeditor/"/> 

也可以在 /FCKeditorBasePath/editor/filemanager/connectors/aspx/config.ascx 中進(jìn)行配置,但我建議 FCKeditor 目錄中的內(nèi)容能不改就不改(fckconfig.js除外),這樣日后升級(jí)可以放心地替換即可。 

三、自定義文件上傳的子目錄的格式 
我們知道,一個(gè)文件夾下面不能存放過(guò)多的文件(據(jù)稱(chēng)Windows下面的目錄下2000為閾值),否則對(duì)該目錄的訪問(wèn)會(huì)嚴(yán)重影響I/O性能。而FCKeditor的文件存儲(chǔ)是在單一的一個(gè)目錄進(jìn)行的。我對(duì)FCKeditor進(jìn)行了擴(kuò)展,可以在Web.config appSettings對(duì)存儲(chǔ)目錄的格式自定義,如: 

<add key="FCKeditor:FolderPattern" value="%y/%m-%d/"/> 
======================================== 
以今天的日期為例:這樣產(chǎn)生的文件上傳子目錄格式為:2008/10-21/。 
年月日格式的目錄可以隨意組合,如: 
<add key="FCKeditor:FolderPattern" value="%y/%m/%d/"/> 
這樣產(chǎn)生的文件上傳子目錄變成了2008/10/21/ 
======================================== 
還可以針對(duì)不同登錄的用戶(hù),采用不同的上傳子目錄 
Web.config 修改上傳子目錄的配置,增加%u表示不同用戶(hù)使用基于其標(biāo)識(shí)不同的上傳子目錄 

<add key="FCKeditor:FolderPattern" value="%u/%y/%m/%d/"/> 
FCKeditor_2.6.3/editor/filemanager/connectors/aspx/config.ascx 中增加獲取當(dāng)前登錄用戶(hù)標(biāo)識(shí)的邏輯 
復(fù)制代碼代碼如下:

public override void SetConfig() 

#region Bochuh's Modification 
// Identifier for logined user 
// Leave blank for default user upload folder 
LoginedUserIdentifier = "44"; // 這里替換成獲取當(dāng)前登錄用戶(hù)表示的代碼 
#endregion 

// ……此文件中原來(lái)的代碼 

這樣可以對(duì)不同用戶(hù),根據(jù)其登錄后的標(biāo)識(shí)(一般是用戶(hù)ID),來(lái)使用不同的目錄進(jìn)行存儲(chǔ),如:7394/2008/10/21/(7394是當(dāng)前登錄用戶(hù)的ID) 
參考: 
%u 代表 當(dāng)前登錄用戶(hù)的標(biāo)識(shí) 
%y 代表 當(dāng)前時(shí)間的年份 
%m 代表 當(dāng)前時(shí)間的月份 
%d 代表 當(dāng)前時(shí)間的日 
四、自定義文件上傳的文件名格式 
FCKeditor對(duì)文件名的處理規(guī)則是:如果當(dāng)前目錄下沒(méi)有重名文件,則上傳后的文件名與用戶(hù)PC上的文件名一致;若存在n個(gè)重名文件,則加入用戶(hù)PC上的文件名是Example.xxx,上傳后的文件名變?yōu)椋篍xample(n).xxx 
我的項(xiàng)目里要求對(duì)用戶(hù)上傳的文件名變成Guid的格式,所以我對(duì)FCKeditor也做了擴(kuò)展,在Web.config appSettings可以對(duì)上傳后文件的格式自定義,如: 
<add key="FCKeditor:FilenamePattern" value="%guid.%extl"/> 
這樣的文件名如:a299e63a-7d2d-493d-bbb9-99162ef5b6b8.gif 
參考: 
%guid 代表 一個(gè)新的guid字符串 
%fnl 代表 源文件名的小寫(xiě) 
%fnu 代表 源文件名的大寫(xiě) 
%extl 代表 源文件擴(kuò)展名的小寫(xiě) 
%extu 代表 源文件擴(kuò)展名的大寫(xiě) 
五、對(duì)上傳圖片進(jìn)行縮放處理 
用到FCKeditor圖片上傳功能的場(chǎng)景中,很多是內(nèi)容的發(fā)表。內(nèi)容中往往不需要幾千像素大小的圖片,比如我的項(xiàng)目中,文章區(qū)域最寬也就560像素,所以我做了一個(gè)擴(kuò)展,在Web.config appSettings中可以對(duì)圖片的最大寬度進(jìn)行自定義: 
<add key="FCKeditor:MaxWidthOfUploadedImg" value="560"/> 
有了這段配置,上傳后的圖片的寬度都控制在了560像素及以?xún)?nèi) 

六、自定義上傳后圖片URL中的域名 
為了加快頁(yè)面的渲染,我們可以把圖片等靜態(tài)資源放在一個(gè)獨(dú)立的域名當(dāng)中。但FCKeditor默認(rèn)的圖片上傳后URL是相對(duì)路徑,如圖: 
HTML編輯器FCKeditor .NET的配置、擴(kuò)展與安全性經(jīng)驗(yàn)交流
我增加了這個(gè)擴(kuò)展,在Web.config appSettings可以配置上傳后圖片URL的域名,如: 

<add key="FCKeditor:UploadedFilesDomain" value="http://a.cvimg.cn/"/> 
如圖: 

HTML編輯器FCKeditor .NET的配置、擴(kuò)展與安全性經(jīng)驗(yàn)交流 
七、解決上傳文件名含有中文的文件時(shí)提示 "invalid file type" 的問(wèn)題 
這個(gè)問(wèn)題只需要在Web.config中增加一段配置即可解決: 

復(fù)制代碼代碼如下:

<location path="FCKeditor_2.6.3/editor/filemanager/connectors/aspx/upload.aspx"> 
<system.web> 
<globalization requestEncoding="utf-8" responseEncoding="gb2312"/> 
</system.web> 
</location> 

注意: 
responseEncoding是網(wǎng)站的默認(rèn)編碼 
FCKeditor_2.6.3是FCKeditor的BasePath 

八、FCKeditor的安全性 
在FCKeditor的2.3.2版本里,曾有一個(gè)漏洞,可以通過(guò) /editor/filemanager/browser/default/connectors/aspx/connector.aspx 往服務(wù)器上傳任意文件,我的網(wǎng)站就曾經(jīng)中招。 
2.6.3雖然暫未發(fā)現(xiàn)類(lèi)似的問(wèn)題,但一般情況下用不到的文件最好還是刪除比較好: 

FCKeditor BasePath 根目錄中除了保留: 
/editor 
/fckconfig.js 
/fckpackager.xml 
/fckstyles.xml 
/fcktemplates.xml 
/license.txt 
外,全部刪除 
/editor/filemanager/中除了保留: 
/connectors/aspx/config.ascx 
/connectors/aspx/upload.aspx 
外,全部刪除 
刪除 /editor/_source/ 
/editor/filemanager/connectors/aspx/config.ascx 的 CheckAuthentication() 方法中,增加驗(yàn)證用戶(hù)是否登錄的邏輯 
注意:以上措施僅適用于ASP.NET的網(wǎng)站,其他語(yǔ)言版本的網(wǎng)站未考慮。 

附:基于FCKeditor.Net_2.6.3修改后的源碼 
SOURCE: http://xiazai.vevb.com/201108/yuanma/FCKeditor.Net_2.6.3_20090713.zip 
BIN(.NET 2.0): http://xiazai.vevb.com/201108/yuanma/FredCK.FCKeditorV2_20090713.zip 

對(duì)以下文件的指定行進(jìn)行了修改, 
/FileBrowser/Config.cs line 45, 116, 169 
/FileBrowser/FileWorkerBase.cs line 68, 98, 110, 125, 278 
所有修改的地方均包含在名為 "ZhuBo's Modification" 的代碼塊中,也可以通過(guò)搜索整個(gè)項(xiàng)目中的 "ZhuBo's Modification" 快速看到改動(dòng)的地方,方便自己的擴(kuò)展(比如可以設(shè)定圖片的最大高度) 
更新 at 2008-11-11 
新增可選的根據(jù)用戶(hù)標(biāo)識(shí)讓不同用戶(hù)使用獨(dú)自的圖片上傳子目錄,參見(jiàn)上文中“三、自定義文件上傳的子目錄的格式”的更新部分。 

新的源碼與dll文件也已更新。 

更新 at 2009-07-06 
感謝新手中的新手的發(fā)現(xiàn),修正了以下Bug:未配置FCKeditor:FolderPattern,或者FCKeditor:FolderPattern為空時(shí),上傳圖片成功后的路徑中多了一個(gè)"/" 

更新 at 2009-07-13 
圖片后綴名為.gif的不做壓縮處理,防止動(dòng)畫(huà)效果丟失。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到編輯器頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 资溪县| 泽库县| 屏东市| 平远县| 大悟县| 林州市| 天水市| 新沂市| 鹤庆县| 怀宁县| 陇南市| 淳化县| 三河市| 沙坪坝区| 福鼎市| 贡嘎县| 庆城县| 西盟| 多伦县| 东海县| 正阳县| 龙州县| 都安| 镇江市| 合阳县| 绥棱县| 奎屯市| 襄垣县| 鲁甸县| 江源县| 大新县| 开江县| 五常市| 西华县| 绩溪县| 延吉市| 淳化县| 沙河市| 南木林县| 潢川县| 依安县|