编辑插件FCKeditor是相当好用的在线编辑插件,虽说有了新版本的插件CKeditor,但需要为上传文件而使用CKfinder,CKfinder需要附费。所以还是使用FCKeditor比较稳妥,下面就讲下如何在ASP.NET中配置FCKeditor.
<一> 配置使用FCKeditor的基本功能
步骤1. 下载FCKeditor.zip和 FCKeditor.NET
可以百度一下,很多地放都有下载。FCKeditor.NET主要是包含dll文件,FCKeditor.zip主要包括一些js功能。
步骤2. 导入 FCKeditor.NET 中的FredCK.FCKeditorV2.dll文件
解压FCKeditor.NET ,我这里的版本是FCKeditor.NET_2.5.zip,选择FCKeditor.Net_2.5\bin\Release\2.0\下的FredCK.FCKeditorV2.dll,当然如果是.NET Framework1.0 ,也可以选择1.0文件夹下的dll
将FredCK.FCKeditorV2.dll复制到ASP.NET 工程文件夹的Bin文件夹下,并添加引用,如下图所示。
选择Bin目录下的FredCK.FCKeditorV2.dll文件,并点击确定。
如果要想该在线编辑插件如TextBox控件一样拖拽,可以在工具箱内右击鼠标,单击“选择项”,选择FredCK.FCKeditorV2.dll所在的位置,如下图所示。
点击确定后,即可在工具箱内看到该控件标示“FCKeditor”。
此时FCKeditor就可以和ASP.NET 服务器控件一样使用,但功能并没有添加上,因为并没有导入FCKeditor.zip中的内容,运行时会报错。
步骤3. 复制 FCKeditor.zip中的整个文件夹fckeditor到ASP.NET 工程的根目录。
此时已经可用FCKeditor的在线编辑功能,但是上传文件的功能默认是关闭的需要手动开启。
<二> 开启FCKeditor的上传文件功能(以图片为例)
步骤1. 配置 Web.config
在Web.config文件中的AppSettings节中加入两个键值对,如下所示
<appSettings>
<add key="FCKeditor:BasePath" value="~/fckeditor/"/>
<add key="FCKeditor:UserFilesPath" value="/Files/" />
</appSettings>
注:~/fckeditor/ 表明fckeditor文件夹所在的位置。但/Files需要使用相对路径,主要是由于上传图片需要传递的是相当路径,而非客户端机器的机器路径。
步骤2. 在网站根目录建立Files文件夹,并更改其权限为可写。
步骤3. 修改fckeditor/fckconfig.js文件
在该文件中查找到_FileBrowserLanguage 和_QuickUploadLanguage
var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php
将asp改为aspx
var _FileBrowserLanguage = 'aspx' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'aspx' ; // asp | aspx | cfm | lasso | php
此时,就可以上传图片到服务器端。
<三> 添加FCKeditor的从Word导入功能(以图片为例)
FCKeditor本身具有从Word粘贴的功能,但会造成格式的丢失,因此采取的方法是上传word到服务器端,利用C# 将其转换为html格式存储即可【以下部分代码来自网络】。
[注:FCkeditor.Value可以获得FCKeditor编辑框内的值,其类型为string,因此在Sql Server数据库中可以用nvarchar或Text字段存储]
步骤 1. 为fckeditor添加自定义按钮
需要修改的文件有三个:
a). fckconfig.js
b). zh-cn.js
c). fckeditorcode_ie.js(gecko的差不多)
fckconfig.js: 添加导入word文档按钮
找到这行中 FCKConfig.ToolbarSets["Default"] = [...
'Paste','PasteText','PasteWord',在PasteWord后插入'ImportWord'.
[注:这是默认关闭或添加在线编辑工具栏上的按钮]
zh-cn.js
添加上面添加的按钮的中文提示
找到 PasteWord : "从 MS Word 粘贴", 在后面添加
ImportWord : "导入Word文档",
fckeditorcode_ie.js 在按钮中显示按钮
找到
case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;
这行,在其后加入
case 'ImportWord':B=new FCKToolbarButton('ImportWord',FCKLang.ImportWord,null,null,false,true,11);break; 为按钮加入功能
找到
case 'PasteWord':B=new FCKPasteWordCommand();break;
这行,在其后加入
case 'ImportWord':B=new FCKDialogCommand('ImportWord',FCKLang.ImportWord,'dialog/ImportWord/ImportWord.aspx',700,600);break;
这样就设置好了自定义按钮, 当用户点击这个按钮之后, 会自动弹出页面打开ImportWord.aspx这个文件.
步骤 2. 为fckeditor添加从Word导入功能(C#实现)
剩余的就是.net的工作了, 这里提供一个文件夹下载.
http://download.youkuaiyun.com/source/1681907
里面包含Microsoft.Office.Interop.Word.dll 和ImportWord文件夹,ImportWord文件夹包含(ImportWord.aspx\ImportWord.aspx.cs).用法:在bin文件夹中引用 Microsoft.Office.Interop.Word.dll .把ImportWord文件夹放入fckeditor\editor\dialog文件夹中,修改这里面的两个文件.
1\修改.cs文件:
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
null, doc, new object[] { saveFileName, WdSaveFormat.wdFormatFilteredHTML });
2\修改.aspx文件
<script src="../common/fck_dialog_common.js" type="text/javascript"></script>
步骤 3. 更改上传word文件路径
1. 找到 string phyPath = Server.MapPath("~/") + "Portals\\0\\WordImport\\";
将"Portals\\0\\WordImport\\"改为自己的路径,这里我改为
string phyPath = Server.MapPath("~/") + "Files\\file\\";
2.找到 string strNew = Page.Request.ApplicationPath + "/Portals/0/WordImport/" + strOld;
将"/Portals/0/WordImport/"改为"Files/file/",注意在Files的前面不能有'/',否则会找不到word文档中包含图片的路径
步骤 4. 权限设定
在调试 阶段上述设定可能没有问题,但发布之后可能会出现权限问题,如 “检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。。。”的错误。 我当时在调试的时候并没有出错,但在发布到服务器上就出现了上述问题【我的服务器是Server 2008 + IIS7.0】,采取配置Dcom组件将问题解决。
1。在“运行”中输入“dcomcnfg”,进入“组件服务”,依次选择->“组件服务”->"计算机"->"我的电脑"->"DCOM配置"->"Microsoft Word 文档"。右击“属性”,选择“标示”标签下的“交互式用户”,如下图所示。
2.分别配置“安全”标签下的“启动和激活权限” 和 “访问权限”
点击“安全”标签下的“启动和激活权限”
点击“编辑”在弹出的新窗口,点击“添加”按钮,在“选择用户或组”窗口点击高级,在其中查找“ASP.NET”用户 和“Network”用户组,点击确定,勾选上本地启动和本地激活。
【这里要特别注意注意:在IIS6.0中要添加“ASP.NET”用户 和“Network”用户组; 而在IIS7.0中已经没有“ASP.NET”,需要添加的是“Network Service”,为了保险,还可加上IUSER】
“访问权限”的编辑与上面相同,唯一不同的是其权限仅需要“本地访问”即可。
至此,FCKeditor就具有了从word导入的功能了。