`
sqq600om
  • 浏览: 12159 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

伟大的那时花开和FCKeditor的纠结

 
阅读更多

伟大的那时花开和FCKeditor的纠结
2010年02月22日
  写这篇文章一是为了让那些了我一样跟FCKeditor纠缠了很久的新手在遇到和我类似的问题时可以不再困惑!二是总结一下经验教训,较量了这么多天虽然搞定了大部分的问题,但是心里还是觉得自己没有彻底的胜利,因为在这个过程中虽然学到了很多新的东西,但是任然有好多东西至今为止是模糊不清的。
  之前老板对网站的新闻提出了一个新的要求就是要可以在一篇新闻中查多张图片。本来的那个后台上传图片新闻的页面不是我做的,只可以浏览上传一张图片,在数据库里有一个单独的字段是用来存图片的路径和名称的,图片直接上传到服务器上制定的文件夹里,而不是存在数据库里。老板提出新的要求之后,我想到的第一个办法就是在数据库里多增加几个存图片路径和名称的字段但是这样会有空间的浪费,后来想也可以把这个字段拿出来单独做一个表。只是这么想了一下感觉还是比较费劲的,而且就算是做完了,功能不仅不全面,还用起来比较别扭。然后在网上发现了一个开源的文档在线编辑器FCKeditor,这个西大家的评价还不错,于是在下载按着网上所说的配置还算是比较顺利的完成了本地的图片浏览上传部分的工作。网上类似的配置文章有很多拣一篇不错的贴在这里http://www.zu14.cn/2009/01/19/fckeditor-net-config/
  这里有一个小插曲 在保存时 应该用FCKeditor1.Value,结果我弄成了FCKeditor1.CreateHtml。用Response.Write显示时出错了,显示出来的是脚本而不是正常的页面。郁闷了许久,最后解决了。当时我其实是看到了Value属性的但是我写的时候刻意想了想,觉得既然是要转化成html显示出来那么应该使用CreateHtml属性才对啊,有点想当然了,结果出错了。这是在本机调试的时候出现的唯一的问题,总的来说还算是比较顺利的,因为FCKeditor1的功能确实是比较强大的。但是后来老板也提出了质疑,因为毕竟是做的商用的东西,那这样的别人写的半成品配置一下就给客户用能保证安全吗?老板这么说的时候我们已经把做好的程序放到了服务器上了,我的心当时就有点发凉了,做了这么半天要是被否决了那就没意思了。然后老板没在说什么,我当时想完蛋了,让我写一个在线的编译器这简直比让唐僧娶老婆还难。
  扯了这么多的闲话,还是说说后来遇到的难题,和解决的办法吧。
  前面说过了在本机调试是没有问题了。实现了所要实现的功能。上传到服务器上后问题出现了。浏览上传图片是会死,卡在那里一直不动,进度条一直在闪啊闪啊,然后就是没有反应了。上网去查,开始查到的结论是:出现这样的问题可能有两种可能,一是webconfig里的上传图片的路径不对,二是服务器上没有分配权限。后来这两个问题都被排除了,因为我发现虽然浏览上传图片的时候页面死掉了,但是图片的却已经上传到服务器上了。最后问题定性为“FCKeditor 2.6.3 版在上传图片 只能在本机传不能在服务器上用时”
  找的的解决办法如下:
  用fckeditor上传时,本地测试是没有问题的,但是当发布以后,上传文件时会出现js脚本说没有权限的问题。
  解决办法:
  到Fckeditor官方网站下载FredCK.FCKeditorV2.vs2005 (asp.net)
  打开解决方案,
  找到 FileBrowser/FileWorkerBase.cs 文件,
  第118行
  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;try{document.domain=d;}catch (e){break;}}})();" );
  改成
  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;}})();" );
  其实上面的解决办法里少了很关键的一步,就是要重新编译生成dll文件,然后我就在这个问题上纠结了两天。
  
  一开始是我不知道要重新编译生成新的FredCK.FCKeditorV2.dll文件,后来是知道了要生成新的dll文件了,但是很可恶的事情发生了,无论我怎么调试,怎么编译,怎么生成新的解决方案,这个FredCK.FCKeditorV2.dll总是不变,就是说我把源码已经改的正确了,但是dll文件就是不跟着源码一起变,好像这个dll跟源码没关系似地。我当时就开始怀疑了,这个FCKeditor到底是不是开源的,别是骗人的吧。跟代码这个东西打交道,有时候真的是很凭感觉的,说实话我之前对dll一点都不了解,只是有一个模棱两可的概念在头脑里。我就一直在那里想啊想啊想,上网查。但是得到的只有一句关键的话就是要重新编译生成新的dll而且类似的文章里,也只有这么一句话。貌似编译生成DLL应该是和按ctrl+space就可以切换输入法一样简单的事情!但是,我就是不知道怎么做!后来事实证明了真的就是这么简单的事情。
  写一下这个简单的让人抓狂的步骤吧
  在VS2005中打开FCKeditor.Net_2.6.3下的FredCK.FCKeditorV2.vs2005.csproj,(注:一定要单独打开)然后按ctrl+F5就可以了,这个时候你再去看FCKeditor.Net_2.6.3\bin\Debug\2.0的FredCK.FCKeditorV2.dll已经变成最新的了。
  就是这么简单的事情如果要是将FCKeditor.Net_2.6.3包含在原来的项目里无论怎么编译系统只会根据FredCK.FCKeditorV2.dll.refresh中的路径:“FCKeditor.Net_2.6.3\bin\Debug\2.0\FredCK.FCKeditorV2.dll”将原有的FredCK.FCKeditorV2.dll原封不动的拷贝到项目自己的bin文件夹下,而不会从新编译生成新的FredCK.FCKeditorV2.dll文件。这真是一件很奇怪的事情!!!!!
  刚刚在写着篇总结的时候想到了一个问题。我不能只纠缠在代码上,其实做.NET到现在也有差不快一年的时间了,但是我对与.NET底层的东西一点都不了解,也不知道到底该学点什么,但是总感觉自己真的是对.NET不是很熟悉!我要继续学习我的WCF高级编程和Microsoft.NET.框架程序设计。我到底该学点什么呢?什么才是真正的王道啊?
  之前学JavaScript,Ajax,等等一系列的东西都是从智联招聘或是中华英才网上找.NET程序员的要求里看到的。人家要求什么,我就学什么吧,然后呢?
  路在何方啊,路在脚下?真的要埋头苦干?遇到什么问题解决什么问题就可以进步吗?困惑啊!困惑!我有一个梦想就是成为一个我认为的很牛的人,但是从普通人到牛人,该怎么过呢?估计差不多就是从村姑到嫦娥的距离吧!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics