默认的Fckeditor具有从ms word粘贴的功能, 但是当你的word文档中包含图片的时候, 就会出现无法显示图片的错误,
在这里我们要实现直接导入word文档,如果其中包含图片,则自动分离图片并上传到服务器后在fckeditor中显示.
1. 为fckeditor添加自定义按钮
需要修改的文件:
1. fckconfig.js
2. zh-cn.js
3. 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,'/ImportWord/ImportWord.aspx',700,600);break;
这样就设置好了自定义按钮, 当用户点击这个按钮之后, 会自动弹出页面打开ImportWord.aspx这个文件.
剩余的就是.net的工作了, ImportWord是我从网上下载的, 基本没有修改
这行我修改为wdFormatFilteredHTML.
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
null, doc, new object[] { saveFileName, WdSaveFormat.wdFormatFilteredHTML });
大功告成, 如果打开页面后上传word文档会遇到权限错误
请在web.config中的<system.web>中加入<identity impersonate="true" userName="Administrator" password="xxx" />这句即可解决.
但是这样明显很不爽的是涉及到安全问题, 我试过其他的办法(http://blog.csdn.net/zhao8155363/archive/2007/10/29/1854309.aspx),
皆没成功, 希望有知道别的办法的朋友告诉我.
本文参考:http://www.cnblogs.com/life-ego/articles/1228370.html
Fckeditor在.net下文件上传提示提示没有权限的解决办法
首先下载FCKeditor.Net_2.6.3的source包并打开FCKeditor.Net_2.6.3,
找到文件FileWorkerBase.cs
第118行 Response javascript代码的那行, 改为
Response.Write( @"(function(){var d=document.domain;while (true){try{var A=window.top.opener.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;}})();" );
重新编译解决方案, 实用新的FredCK.FCKeditorV2.dll可以解决问题.