ASP.NET2.0 文本編輯器FCKeditor使用方法詳解

1.FCKeditor的官方網站是:http://www.fckeditor.net/download

 


目前最新的FCKeditor 2.4.2版本。

 

請在此頁下載:http://sourceforge.net/project/showfiles.php?group_id=75348

 

 

 

說明:
FCKeditor_2.6.6.zip 是其最新的Javascript文件和圖片什麼的;
FCKeditor.Net_2.6.4.zip 是ASP.NET調用的DLL在裏面。

 

2.分別解壓後把FCKeditor_2.6.6.zip裏的fckeditor目錄整個複製到網站中。

 

3.解壓FCKeditor.Net_2.6.4.zip包後在FCKeditor.Net_2.6.4/bin/Debug目錄裏找到FredCK.FCKeditorV2.dll。其他文件沒用,把FredCK.FCKeditorV2.dll複製到我們的網站,建立一個Bin目錄

 

4.引用FredCK.FCKeditorV2.dll。
第一步:

第二步:

5.導入工具箱。
在“工具箱”下右鍵

點擊“選擇項”。彈出如圖窗口:


點擊瀏覽,找到dll所在目錄。

這時發現工具箱裏多出FCKeditor控件。

 

6.拖拽FCKeditor到頁面上

7.配置WebConfig
<?xml version="1.0"?>
<!--
注意: 除了手動編輯此文件以外,您還可以使用
Web 管理工具來配置應用程序的設置。可以使用 Visual Studio 中的
“網站”->“Asp.Net 配置”選項。
設置和註釋的完整列表在
machine.config.comments 中,該文件通常位於
/Windows/Microsoft.Net/Framework/v2.x/Config 中
-->
<configuration>
<appSettings>

<add key="FCKeditor:BasePath" value="~/fckeditor/"/>

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

</appSettings>

<connectionStrings/>
<system.web>

 

說明:BasePath是fckeditor所在路徑,fckeditor由於我們直接放網站目錄下這樣寫就可以,如果您的網站多放幾層適當調整即可。
UserFilesPath所有上傳的文件的所在目錄。爲什麼要設置成/Files這樣而不是~/Files因爲FCKeditor使用這個值來返回你上傳後的文件的相對路徑到客戶端。否則的話客戶訪問的時候就會取客戶的機器目錄而不是http形式的目錄。

建議:Files要單獨做wwwroot目錄下的一個站點比較好,和我們的站點FCKEditor平行。不要把它放FCKEditor裏,爲什麼呢?因爲Files是要讓客戶有寫的權限的,如果放FCKEditor下很危險。

 

8.Files目錄要有的權限。你根據自己網站需求設置那個帳號,本文爲方便設置User實際中你可能用ASP.NET帳號更合理。

 

 

9.修改fckeditor/fckconfig.js文件


在第182行的位置
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

 

 

10.FCKeditor給其瘦身。以_打頭的的都是範例文件或源文件,不過建議小心。

 

 

11.下面以上傳圖片示例說明如何使用,

點擊“瀏覽服務器”。

彈出窗口很容易報錯

如果報錯XML request error: Internal Server Error(500),很可能就是目錄路徑不對和寫權限沒有。

選擇圖像



最後效果

前臺代碼:

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

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

<!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>FCKeditor文本編輯器</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<fckeditorv2:fckeditor id="FCKeditor1" runat="server" DefaultLanguage="zh-cn" Height="400px" Width="660px"
></fckeditorv2:fckeditor>


</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

private bool CheckAuthentication()
{
return true
;
}


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

3.未能加載類型“FredCK.FCKeditorV2.FileBrowser.Config”

出現這樣的問題主要是因爲:你項目裏使用的fck的版本和你bin目錄下的fck的dll的版本不一樣導致的!

把fckeditor.dll再添加個新的,但是要與你用的fckeditor文件是一個版本的

4.發佈以後控件的位置說找不到網頁

將配置文件的改爲相對路徑~/

    <add key="FCKeditor:BasePath" value="~/fckeditor/"/>
    <add key="FCKeditor:UserFilesPath" value="~/Upload/"/>

5.FCKeditor Times附近有語法錯誤

Times附近有語法錯誤
----這個問題是FCKEditor的BUG;很多人不理解爲什麼“Times附近有語法錯誤”,自己Times是從哪裏來的,這個問題大家看一下源HTMl就知道,一種叫“Times New Roman”什麼的字體。其實說白了也就是格式錯誤。
提供一種暫時的Client端的解決辦法:發佈內容時,會提示是否刪除word格式,選“是”,並選擇將Css,字體格式全部清除。

一種一勞永逸的辦法,將FCKEditor1.value替換爲FCKEditor1.value.Replace("'", "''")問題就可以得到解決。

fckeditor怎麼屏蔽一些按鈕?

fckconfig.js文件中
FCKConfig.ToolbarSets["Default"]


javascript驗證:

<script type="text/javascript" language="javascript">

    function a()

    {

            //得到控件的html

             var checkContent =FCKeditorAPI.GetInstance("FCKeditor1").GetXHTML();

            alert(checkContent);

            //得到html的長度

             var len = FCKeditorAPI.GetInstance("FCKeditor1").GetXHTML().length;

            alert(len);

            //得到fck控件

            var oEditor = FCKeditorAPI.GetInstance('FCKeditor1');

            //得到編輯器中的文字

            var text = oEditor.EditorDocument.body.innerText;

            alert(text);

            //讓編輯器得到焦點

            oEditor.Focus();

 

    }

    </script>

內容用法詳解: 
獲得fck(content是fck編號)
var oEditor = FCKeditorAPI.GetInstance('content');
var content = oEditor.GetXHTML(true);

// 獲取編輯器中HTML內容
function getEditorHTMLContents(EditorName) {
    var oEditor = FCKeditorAPI.GetInstance(EditorName);
    return(oEditor.GetXHTML(true));
}

// 獲取編輯器中文字內容
function getEditorTextContents(EditorName) {
    var oEditor = FCKeditorAPI.GetInstance(EditorName);
    return(oEditor.EditorDocument.body.innerText);
}

// 設置編輯器中內容
function SetEditorContents(EditorName, ContentStr) {
    var oEditor = FCKeditorAPI.GetInstance(EditorName) ;
    oEditor.SetHTML(ContentStr) ;
}

FCKeditorAPI是FCKeditor加載後註冊的一個全局對象,利用它我們就可以完成對編輯器的各種操作。

在當前頁獲得 FCK 編輯器實例:
var Editor = FCKeditorAPI.GetInstance('InstanceName');

從 FCK 編輯器的彈出窗口中獲得 FCK 編輯器實例:
var Editor = window.parent.InnerDialogLoaded().FCK;

從框架頁面的子框架中獲得其它子框架的 FCK 編輯器實例:
var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');

從頁面彈出窗口中獲得父窗口的 FCK 編輯器實例:
var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');

獲得 FCK 編輯器的內容:
oEditor.GetXHTML(formatted); // formatted 爲:true|false,表示是否按HTML格式取出
也可用:
oEditor.GetXHTML();

設置 FCK 編輯器的內容:
oEditor.SetHTML("content", false); // 第二個參數爲:true|false,是否以所見即所得方式設置其內容。此方法常用於"設置初始值"或"表單重置"哦作。

插入內容到 FCK 編輯器:
oEditor.InsertHtml("html"); // "html"爲HTML文本

檢查 FCK 編輯器內容是否發生變化:
oEditor.IsDirty();

在 FCK 編輯器之外調用 FCK 編輯器工具條命令:
命令列表如下:
DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo

使用方法如下:
oEditor.Commands.GetCommand('FitWindow').Execute();

= FCKConfig.BasePath + 'plugins/'
// FCKConfig.Plugins.Add( 'placeholder', 'en,it' ) ;


去掉//後,就相當於把placeholder這個插件功能加上了,fckeditor的插件文件都在/editor/plugins/文件夾下分類按文件夾放置的,對於fckeditor2.0來說,裏面有兩個文件夾,也就是有兩個官方插件,placeholder這個文件夾就是我們剛纔加上去的,主要用於多參數或單參數自定義標籤的匹配,這個在製作編輯模板時非常管用,要想看具體實例的話,大家可以去下載acms 這個系統查看學習,另一個文件夾tablecommands就是編輯器裏的表格編輯用到的了。當然,如果你想製作自己其它用途的插件,那就只要按照 fckeidtor插件的製作規則製作完放置在/editor/plugins/下就行,然後再在fckeidtor.js裏再添加 FCKConfig.Plugins.Add('Plugin Name',',lang,lang');就可以了。

第二部分 ,如何讓編輯器一打開的時候,編輯工具條不出現,等點“展開工具欄”時纔出現?Easy,FCKeditor本身提供了這個功能啦,打開fckconfig.js,找到

FCKConfig.ToolbarStartExpanded = true ;
改成
FCKConfig.ToolbarStartExpanded = false ;
就可以啦!

第三部分,使用自己的表情圖標,同樣打開fckcofnig.js到最底部那一段


FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;
FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif'] ;
FCKConfig.SmileyColumns = 8 ;
FCKConfig.SmileyWindowWidth    = 320 ;
FCKConfig.SmileyWindowHeight = 240 ;

上面這段已經是我修改過的了,爲了我發表此文的版面不會被撐得太開,我把FCKConfig.SmileyImages那一行改得只有三個表情圖了。

第一行,當然是表情圖標路徑的設置,第二行是相關表情圖標文件名的一個List,第三行是指彈出的表情添加窗口最每行的表情數,下面兩個參數是彈出的模態窗口的寬和高嘍。

第四部分,文件上傳管理部分

此部分可能是大家最爲關心的,上一篇文章簡單的講了如何修改來上傳文件以及使用fckeidtor2.0才提供的快速上傳功能。再我們繼續再深層次的講解上傳功能

FCKConfig.LinkBrowser = true ;
FCKConfig.ImageBrowser = true ;
FCKConfig.FlashBrowser = true ;在fckconfig.js找到這三句,這三句不是連着的哦,只是我把他們集中到這兒來了,設置爲true的意思就是允許使用fckeditor來瀏覽服務器端的文件圖像以及flash等,這個功能是你插入圖片時彈出的窗口上那個“瀏覽服務器”按鈕可以體現出來,如果你的編輯器只用來自己用或是隻在後臺管理用,這個功能無疑很好用,因爲他讓你很直觀地對服務器的文件進行上傳操作。但是如果你的系統要面向前臺用戶或是像blog這樣的系統要用的話,這個安全隱患可就大了哦。於是我們把其一律設置爲false;如下

FCKConfig.LinkBrowser = false ;
FCKConfig.ImageBrowser = false ;
FCKConfig.FlashBrowser = false ;

這樣一來,我們就只有快速上傳可用了啊,好!接下來就來修改,同樣以asp爲範例進行,進入/editor/filemanager/upload/asp/打開config.asp,修改
ConfigUserFilesPath = "/UserFiles/"這個設置是上傳文件的總目錄,我這裏就不動了,你想改自己改了

好,再打開此目錄下的upload.asp文件,找到下面這一段


Dim resourceType
If ( Request.QueryString("Type") <> "" ) Then
resourceType = Request.QueryString("Type")
Else
resourceType = "File"
End If
然後再在其後面添加


ConfigUserFilesPath = ConfigUserFilesPath & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/"
這樣的話,上傳的文件就進入“/userfiles/文件類型(如image或file或flash)/年/月/”這樣的文件夾下了,這個設置對單用戶來用已經足夠了,如果你想給多用戶系統用,那就這樣來改


ConfigUserFilesPath = ConfigUserFilesPath & Session("username") & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/"
這樣上傳的文件就進入“/userfiles/用戶目錄/文件類型/年/月/”下了,當然如果你不想這麼安排也可以修改成別的,比如說用戶目錄再深一層等,這裏的Session("username")請根據自己的需要進行修改或換掉。

上傳的目錄設置完了,但是上傳程序還不會自己創建這些文件夾,如果不存在的話,上傳不會成功的,那麼我們就得根據上面的上傳路徑的要求進行遞歸來生成目錄了。

找到這一段


Dim sServerDir
sServerDir = Server.MapPath( ConfigUserFilesPath )
If ( Right( sServerDir, 1 ) <> "/" ) Then
    sServerDir = sServerDir & "/"
End If

把它下面的這兩行


Dim oFSO
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
用下面這一段代碼來替換


dim arrPath,strTmpPath,intRow
strTmpPath = ""
arrPath = Split(sServerDir, "/")
Dim oFSO
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
for intRow = 0 to Ubound(arrPath)
    strTmpPath = strTmpPath & arrPath(intRow) & "/"
    if oFSO.folderExists(strTmpPath)=false then
     oFSO.CreateFolder(strTmpPath)
    end if
next
用這段代碼就可以生成你想要的文件夾了,在上傳的時候自動生成。

好了,上傳文件的修改到現在可以暫時告一段落了,但是,對於中文用戶還存在這麼個問題,就是fckeditor的文件上傳默認是不改名的,同時還不支持中文文件名,這樣一來是上傳的文件會變成“.jpg”這樣的無法讀的文件,再就是會有重名文件,當然重名這點倒沒什麼,因爲fckeditor會自動改名,會在文件名後加(1)這樣來進行標識。但是,我們通常的習慣是讓程序自動生成不重複的文件名

在剛纔那一段代碼的下面緊接着就是
' Get the uploaded file name.
sFileName = oUploader.File( "NewFile" ).Name
看清楚了,這個就是文件名啦,我們來把它改掉,當然得有個生成文件名的函數才行,改成下面這樣

'//取得一個不重複的序號
Public Function GetNewID()
dim ranNum
dim dtNow
randomize
dtNow=Now()
ranNum=int(90000*rnd)+10000
GetNewID=year(dtNow) & right("0" & month(dtNow),2) & right("0" & day(dtNow),2) & right("0" & hour(dtNow),2) & right("0" & minute(dtNow),2) & right("0" & second(dtNow),2) & ranNum
End Function

' Get the uploaded file name.
sFileName = GetNewID() &"."& split(oUploader.File( "NewFile" ).Name,".")(1)

這樣一來,上傳的文件就自動改名生成如20050802122536365.jpg這樣的文件名了,是由年月日時分秒以及三位隨機數組成的文件名了

發佈了18 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章