在Asp.net+FCKEditor設定最新最完整配置方法(內嵌文字編輯器)

來源:互聯網
上載者:User

FCKeditor相關資料簡介:

官方網站http://www.fckeditor.net/
官方文檔http://wiki.fckeditor.net/
http://www.fckeditor.net/download/default.html
官方示範http://www.fckeditor.net/demo/default.html
下載
FCKeditor2.6.4zip是其最新的Javascript檔案和圖片等;
FCKeditor.NET.zip是一個ASP.NET控制項DLL檔案。

啟用VS建立一個C#的WEB Site工程,取名FCKPro。

 

FCKeditor安裝:

所謂安裝就是一個簡單的拷貝過程。把下載的FCKeditor2.6.4.zip檔案包直接解壓縮到FCKPro的根目錄下,這樣根目錄下就得到一個FCKeditor檔案夾,裡面富含所有FCKeditor的核心檔案。

然後把下載的FCKeditor.Net.zip隨便解壓縮到你硬碟的一個空目錄,裡面是FCKeditor.Net的原始碼,你可以對它進行再度開發,我們只是直接使用其目錄下的"bin"Debug目錄中的FredCK.FCKeditorV2.dll檔案。

在VS中添加對FredCK.FCKeditorV2.dll的引用:

1.在FCKPro工程瀏覽器上右鍵,選擇添加引用(Add Reference…),找到瀏覽(Browse)標籤,然後定位到你解壓好的FredCK.FCKeditorV2.dll,確認就可以了。這時,FCKPro工程目錄下就多了一個bin檔案夾,裡麵包含FredCK.FCKeditorV2.dll檔案。當然,你也可以完全人工方式的來做,把FredCK.FCKeditorV2.dll直接拷貝到FCKPro"bin"下面,VS在編譯時間會自動把它編譯進去的。

 

2.為了方便RAD開發,我們把FCKeditor控制項也添加到VS的工具箱(Toolbox)上來,展開工具箱的常用標籤組(General),右鍵選擇組件(Choose Items…),在對話方塊上直接找到瀏覽按鈕,定位FredCK.FCKeditorV2.dll,然後確認就可以了。這時工具箱呈現出控制項的樣子,這樣會省去很多在開發時使用FCKeditor控制項時要添加的聲明代碼。

至此,你已經完成了FCKeditor的安裝,並可以在你的項目中使用FCKeditor了,當然後面還有很多需要配置的東西。

FCKeditor詳細的設定:

進入FCKeditor檔案夾,編輯 fckconfig.js 檔案。

 

1、此步驟是必須的,也是最重要的一步。

修改

var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py

var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php

改為

var _FileBrowserLanguage = 'aspx' ; // asp | aspx | cfm | lasso | perl | php | py

var _QuickUploadLanguage = 'aspx' ; // asp | aspx | cfm | lasso | php

 

2、配置語言套件。有英文、繁體中文等,這裡我們使用簡體中文。

修改

FCKConfig.DefaultLanguage = 'en' ;

FCKConfig.DefaultLanguage = 'zh-cn' ;

 

3、配置皮膚。有default、office2003、silver風格等,這裡我們可以使用預設。

FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ;

 

4、在編輯器域內可以使用Tab鍵。(1為是,0為否)

FCKConfig.TabSpaces = 0 ; 改為FCKConfig.TabSpaces = 1 ;

 

5、加上幾種我們常用的字型的方法,例如:

修改

FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

FCKConfig.FontNames = '宋體;黑體;隸書;楷體_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana'

 

6、編輯器域內預設的顯示字型為12px,想要修改可以通過修改樣式表來達到要求,開啟/editor/css/fck_editorarea.css,修改font-size屬性即可。如font-size: 14px;

 

7、關於安全性。

如果你的編輯器用在網站前台的話,那就不得不考慮安全了,在前台千萬不要使用Default的toolbar,要麼自訂一下功能,要麼就用系統已經定義好的Basic,也就是基本的toolbar,

修改

FCKConfig.ToolbarSets["Basic"] = [

     ['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']

FCKConfig.ToolbarSets["Basic"] = [

['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-','Smiley','SpecialChar','Replace','Preview']

] ;

這是我改過的Basic,把映像功能去掉,把添加連結功能去掉,因為映像和連結和flash和映像按鈕添加功能都能讓前台頁直接存取和上傳檔案,要是這兒不改直接給你上傳個木馬還不馬上玩完?

當然也可以配置一下WebConfig,也能讓它確保安全,接下來我們將講到。

 

FCKPro工程項目的設定:

1、配置WebConfig,在<appSettings>節點添加,如下所示:

<appSettings>

     <add key="FCKeditor:BasePath" value="/項目名稱/fckeditor/"/>

   //Win2003下,Files目錄一定要有IIS_WPG使用者的寫入權限,否則可能無法上傳

     <add key="FCKeditor:UserFilesPath" value="/項目名稱/Files/" />

</appSettings>

說明:BasePath是fckeditor所在路徑,fckeditor由於我們直接放網站目錄下這樣寫就可以,如果您的網站多放幾層適當調整即可。UserFilesPath是所有上傳的檔案的所在目錄。我們建立了一個Files檔案夾放在了項目中做為上傳檔案的所在目錄,這裡為了方便,但由於考慮到安全性,我們建議Files要單獨做wwwroot目錄下的一個網站比較好,和我們的網站FCKEditor平行。不要把它放FCKEditor裡,為什麼呢?因為Files是要讓客戶有寫的許可權的,如果放FCKEditor下很危險。Files目錄要有寫的許可權。你根據自己網站需求設定那個帳號,本文為方便設定User實際中你可能用ASP.NET帳號更合理。

 

2、在FCKpro工程項目中編寫一個最簡單的頁面

<%@ Page Language="C#"   AutoEventWireup="true"    CodeFile="Default.aspx.cs" Inherits="_Default" validateRequest="false" %>

<%@ Register Assembly="FredCK.FCKeditorV2" Namespace="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>

// 這裡要主要兩個參數

// 預設為<%@ Page Language="C#"   AutoEventWireup="true"    CodeFile="Default.aspx.cs" Inherits="_Default" %>

// 我們要添加一個參數 validateRequest=false,否則提交帶html代碼的內容會報錯

// 從用戶端(...)中檢測到有潛在危險的 Request.Form 值。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

     <title>無標題頁</title>

</head>

<body>

     <form id="form1" runat="server">

     <div>

         <FCKeditorV2:FCKeditor ID="FCKeditor1" runat="server">

         </FCKeditorV2:FCKeditor>

         &nbsp;</div>

     </form>

</body>

</html>

如何擷取其內容呢?讀取FCKeditor1控制項的Value屬性值即可。

 

FCKEditor 2.6的問題:

1.FCKeditor出現"this connector is disabled Please check the"editor/filemanager/connectors/aspx/config.aspx"錯誤的解決辦法

開啟editor/filemanager/connectors/aspx/config.ascx修改CheckAuthentication()方法,返回true

C# code

view plaincopy to clipboardprint?
{   
< allowing are you so, doing By ?true?. return simply NOT DO : WARNING>  
< implement must You server. your in files the list and upload to ?anyone?>  
< as>  
<>  
< return>  
<>  
< the to ] ?IsAuthorized? Session[ as soon ?true? set is where ...>  
< your in system. logs user>  

        
< LI>
private bool CheckAuthentication() { // WARNING : DO NOT simply return "true". By doing so, you are allowing // "anyone" to upload and list the files in your server. You must implement // some kind of session validation here. Even something very simple as... // //        return ( Session[ "IsAuthorized" ] != null && (bool)Session[ "IsAuthorized" ] == true ); // // ... where Session[ "IsAuthorized" ] is set to "true" as soon as the // user logs in your system. return true; }

2.在上傳檔案視窗點擊瀏覽伺服器,會出現the server didn't send back a proper xml.....錯誤提示,因為後期版本的FCKEditor要求不同類型的檔案分別傳到不同的目錄,包括file,image,falsh,media等目錄,一定要先建立起來。

FCKeditor精簡版的製作方法

 進入FCKeditor檔案夾,把所有“_”開頭的檔案和檔案夾刪掉,這些都是一些範例,只保留editor檔案夾、fckconfig.js、fckeditor.js、fckstyles.xml、fcktemplates.xml就可以了;

  進入editor檔案夾,刪掉“_source”檔案夾,裡面放的同樣是源檔案;

  退回上一級目錄進入filemanager檔案夾,有browser和upload兩個檔案夾。進入browser"default"connectors,只保留aspx檔案夾,其餘的刪掉;mcpuk目錄亦可刪除;upload也一樣,只保留aspx檔案夾;

  退到editor再進入images檔案夾,smiley裡面放的是表情表徵圖,有msn和fun兩個系列,如果你想用自己的表情表徵圖,可以把它們都刪除;如果你想用這裡的表情表徵圖那就不要刪了;

  lang裡面放的是語言套件,如果只是用簡體中文,那麼只保留fcklanguagemanager.js、zh-cn.js兩個檔案就行了,建議也保留en.js(英文)、zh.js(繁體中文)兩個檔案,fcklanguagemanager.js是語言設定檔,有了它才能和fckconfig.js裡的設定成對,對應上相應的語言檔案,一定要保留!

  再退出lang檔案夾,進入skins檔案夾,如果你想使用FCKeditor預設的奶黃色,那就把除了default檔案夾外的另兩個檔案夾直接刪除,如果想用別的,那就看你自己的喜好了。

至此,檔案精簡完畢,由原來的2.55M變成現在的797K了。接著修改設定。

一、自訂 FCKeditor 的 BasePathBasePath 即FCKeditor在網站中的相對路徑,預設值是 /fckeditor/,最好在Web.config appSettings中對其進行配置:
<add key="FCKeditor:BasePath" value="/FCKeditor_2.6.3/"/>

這樣做有諸多優點:

開發環境與生產環境不同,開發環境一般是http://localhost/xxx.com/這種情況下FCKeditor就得放在一個虛擬目錄http://localhost/fckeditor/中,若涉及多個網站的開發,而各網站的FCKeditor有差別時,這樣顯然不是最優;

而且因為物理目錄結構與邏輯目錄結構不同,也會有發生錯誤的隱患;

而如果採用Web.config的配置,就可以在開發環境採用不同的配置,FCKeditor的實體路徑與生產環境保持一致;
當升級FCKeditor時,只需要將新版本的FCKeditor放在相應版本號碼的目錄裡,修改一下配置即可。這樣可以解決因為靜態資源的用戶端緩衝問題,不同使用者出現不同的錯誤的問題;
可以直觀地看到自己的FCKeditor的版本號碼。

二、設定檔上傳的目錄

FCKeditor的檔案上傳(片上傳)目錄可以通過Web.config appSettings進行配置,如:

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

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

三、自訂檔案上傳的子目錄的格式

我們知道,一個檔案夾下面不能存放過多的檔案(據稱Windows下面的目錄下2000為閾值),否則對該目錄的訪問會嚴重影響I/O效能。而FCKeditor的檔案儲存體是在單一的一個目錄進行的。我對FCKeditor進行了擴充,可以在Web.config appSettings對儲存目錄的格式自訂,如:

<add key="FCKeditor:FolderPattern" value="%y/%m-%d/"/>

以今天的日期為例:這樣產生的檔案上傳子目錄格式為:2008/10-21/。
年月日格式的目錄可以隨意組合,如:

<add key="FCKeditor:FolderPattern" value="%y/%m/%d/"/>

這樣產生的檔案上傳子目錄變成了2008/10/21/

參考:

%y    代表 目前時間的年份
%m    代表 目前時間的月份
%d    代表 目前時間的日

四、自訂檔案上傳的檔案名稱格式

FCKeditor對檔案名稱的處理規則是:如果目前的目錄下沒有重名檔案,則上傳後的檔案名稱與使用者PC上的檔案名稱一致;若存在n個重名檔案,則加入使用者PC上的檔案名稱是Example.xxx,上傳後的檔案名稱變為:Example(n).xxx

我的項目裡要求對使用者上傳的檔案名稱變成Guid的格式,所以我對FCKeditor也做了擴充,在Web.config appSettings可以對上傳後檔案的格式自訂,如:

<add key="FCKeditor:FilenamePattern" value="%guid.%extl"/>

這樣的檔案名稱如:a299e63a-7d2d-493d-bbb9-99162ef5b6b8.gif

參考:

%guid    代表 一個新的guid字串
%fnl    代表 源檔案名稱的小寫
%fnu    代表 源檔案名稱的大寫
%extl    代表 源副檔名的小寫
%extu    代表 源副檔名的大寫

五、對上傳圖片進行縮放處理

用到FCKeditor圖片上傳功能的情境中,很多是內容的發表。內容中往往不需要幾千像素大小的圖片,比如我的項目中,文章地區最寬也就560像素,所以我做了一個擴充,在Web.config appSettings中可以對圖片的最大寬度進行自訂:

<add key="FCKeditor:MaxWidthOfUploadedImg" value="560"/>

有了這段配置,上傳後的圖片的寬度都控制在了560像素及以內

六、自訂上傳後圖片URL中的網域名稱
為了加快頁面的渲染,我們可以把圖片等靜態資源放在一個獨立的網域名稱當中。但FCKeditor預設的圖片上傳後URL是相對路徑, 如:/fck/2008-03-01/1.jpg:

我增加了這個擴充,在Web.config appSettings可以配置上傳後圖片URL的網域名稱,如:

<add key="FCKeditor:UploadedFilesDomain" value="http://www.hong100.cn/"/>
圖片地址就變成絕對位址了,形式如: :http:www.aa.com/fck/2008-03-01/1.jpg

七、解決上傳檔案名稱含有中文的檔案時提示 "invalid file type" 的問題

這個問題只需要在Web.config中增加一段配置即可解決:

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

注意:

responseEncoding是網站的預設編碼
FCKeditor_2.6.3是FCKeditor的BasePath

八、FCKeditor的安全性

在FCKeditor的2.3.2版本裡,曾有一個漏洞,可以通過 /editor/filemanager/browser/default/connectors/aspx/connector.aspx 往伺服器上傳任意檔案,我的網站就曾經中招。

2.6.3雖然暫未發現類似的問題,但一般情況下用不到的檔案最好還是刪除比較好:

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() 方法中,增加驗證使用者是否登入的邏輯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.