`
suhuanzheng7784877
  • 浏览: 704441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47751
社区版块
存档分类
最新评论

修改fck源代码(1)

阅读更多

OK,到此为止,FCK基本集成到您的web系统当中。但是目前出现了几个问题。

1.       上传文件是中文名称的会出现异常

2.       建立中文文件夹会出现异常

3.       图片默认是文件夹存储方式,读取图片也是文件路径形式,如果项目需求只能采用二进制流存储(比如说运行环境是云计算环境),则不得不去修改源码。

好的,基于以上问题我们刚刚下载的源代码就有用处了,我们不得不去修改它的源代码来满足我们的要求,呵呵,尤其是第三条,没办法,运行时环境所致……

修改源代码

1.       修改核心servlet

打开net.fckeditor.connector.ConnectorServlet,修改以下内容

151行修改如下

 

newFolderStr = new String(newFolderStr.getBytes("iso8859-1"),"utf-8");

logger.debug("Parameter NewFolderName: {}", newFolderStr);

         242行的位置修改如下

 

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding("UTF-8");

这样在servlet中修改后的代码至少不会中文乱码了。

2.       修改web服务器的编码格式为UTF-8格式,所以如果您的web项目放到自己可以操作的linux下当然可以控制自己的服务器编码了,但如果您是放在ISP服务商提供的虚拟空间中,之前一定要确定他们的web服务器编码格式是UTF-8的,否则不支持中文文件上传的。

3.       下面我们解决存储流图片的问题,有时候项目需求需要将所有的文件以数据库二进制流形式进行存储,这样做的好坏笔者不想过多评论,根据实际情况来选择吧,比这只是给出修改代码解决。

还是先修改刚刚那个核心的servlet

net.fckeditor.connector.ConnectorServlet

在代码的289行的uplFile.write(pathToSave);下面加上存二进制文件的代码

示例代码如下

 

//存图片对象

FCKImage fckImage = new FCKImage();

                    

//存储图片流

InputStream inputStream = uplFile.getInputStream();

                    

fckImage.setId(filename);

fckImage.setPictureContent(inputStream);

fckImage.setSize(uplFile.getSize());

                    

FCKImageDAO fckImageDAO = new FCKImageDAO();

fckImageDAO.save(fckImage);

笔者这里建立了一个FCKImage实体,它的pictureContentInputStream,用于存储图片。至于DAO代码嘛,网上很多代码,在此不再赘述。

之后还得修改一个类文件net.fckeditor.response. XmlResponse

这个类只要是对页面的AJAX调用后的反馈类,此时只需要修改它的setFiles()方法即可。

修改后的方法如下

 

    /**

     * Lists all files in the given dir as XML tags.

     * 文件,应该从数据库中读取图片文件

     * @param dir

     */

    public void setFiles(File dir) {

      

       if (filesElement != null) {

           Element parent = (Element) filesElement.getParentNode();

           parent.removeChild(filesElement);

       }

 

       filesElement = document.createElement("Files");

       document.getDocumentElement().appendChild(filesElement);

      

      

       FCKImageDAO fckImageDAO = new FCKImageDAO();

      

       List<FCKImage> list = fckImageDAO.findAll();

      

       for(FCKImage fckImage : list){

          

           Element fileElement = document.createElement("File");

           fileElement.setAttribute("name", fckImage.getId());

           fileElement.setAttribute("size", "未知");

          

           long length = 0;

           if (fckImage.getSize() < 1024)

              length = 1L;

           else

              length = fckImage.getSize()/1024;

           fileElement.setAttribute("size", String.valueOf(length));

          

           filesElement.appendChild(fileElement);

       }

      

    }

别忙,还有2个页面文件没有修改呢,

一个是/fckeditor/editor/dialog/fck_image/fck_image.jsOnUploadCompleted函数,修改如下:

 

function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )

{

    // Remove animation

    window.parent.Throbber.Hide() ;

    GetE( 'divUpload' ).style.display  = '' ;

 

    switch ( errorNumber )

    {

       case 0 :   // No errors

           alert( '文件已经上传成功' ) ;

           break ;

       case 1 :   // Custom error

           alert( customMsg ) ;

           return ;

       case 101 : // Custom warning

           alert( customMsg ) ;

           break ;

       case 201 :

           alert( '文件名已经存在,您上传的文件需要重新命名为  "' + fileName + '"' ) ;

           break ;

       case 202 :

           alert( '无效的文件类型' ) ;

           return ;

       case 203 :

           alert( "安全错误!您可能没有足够的权限来上传,请检查您的服务器。" ) ;

           return ;

       case 500 :

           alert( '连接不可用' ) ;

           break ;

       default :

           alert( '上传错误,代码: ' + errorNumber ) ;

           return ;

    }

   

    var fileUrlArray = fileUrl.split("/");//全部分割

   

    /**

     * 指向显示流图片的jsp页面

     */

    var showIOurl = "/showImage.jsp?fileId="+fileUrlArray[fileUrlArray.length-1];

 

    sActualBrowser = '' ;

    SetUrl( showIOurl ) ;

    GetE('frmUpload').reset() ;

}

showImage.jsp页面是输出流图片的逻辑页面,稍后奉上源代码。

另一个就是

/fckeditor/editor/filemanager/browser/default/frmresourceslist.htmlOpenFile函数。

修改如下:

 

function OpenFile( fileUrl )

{  

    //连接到显示流文件的jsp

    var showIOurl = "/showImage.jsp?fileId="+fileUrl;

    window.top.opener.SetUrl( showIOurl ) ;

    window.top.close() ;

    window.top.opener.focus() ;

}

可以看到,他们都调用了一个jsp页面,用于输出流文件的。

showImage.jsp代码如下:

 

分享到:
评论

相关推荐

    FCK配置过的源代码

    标题中的"FCK配置过的源代码"指的是该压缩包包含了一份已经经过个性化配置的FCKeditor源代码,主要涉及了上传功能、字符编码、文件大小限制以及界面定制等方面。 1. **上传中文名乱码问题** 在处理非英文文件名时...

    开源FCK编辑器源代码

    开源FCK编辑器是一款在IT领域中广受欢迎的富文本编辑器,它的源代码完全开放,允许用户根据自己的需求进行定制和扩展。这个编辑器以其强大的功能和灵活的可配置性,深受编程爱好者和Web开发者的喜爱。在本文中,我们...

    FCK使用

    标签包括"源码"和"工具",这暗示了博客内容可能会涉及FCKeditor的源代码分析,可能是如何自定义编辑器的功能,或者对源代码进行二次开发。同时,也可能讨论了FCKeditor作为开发工具的使用方法,如何在项目中集成它,...

    一款好的.net fck

    标签中的“FCK 源码”表明这个压缩包可能包含了FCKeditor的源代码,开发者可以查看、修改或扩展编辑器的功能,满足特定需求。对于学习富文本编辑器开发或者想要定制化FCKeditor的人来说,源码是十分宝贵的资源。 ...

    网页FCK编辑控件示例

    5. **源码查看与预览**:用户可以切换到源代码模式查看和编辑HTML代码,同时也可以实时预览编辑效果。 6. **兼容性**:FCKeditor对HTML和XHTML标准有良好的支持,能够生成符合W3C标准的代码。 **使用FCKeditor的...

    web页面 FCK编辑器

    5. **源代码与预览模式**:用户可以在源代码模式下直接编辑HTML,也可以在预览模式下查看编辑效果。 二、FCKeditor的主要功能: 1. **富文本编辑**:支持基本的文本格式化,如加粗、斜体、下划线、字体大小和颜色...

    fck编辑器(调整工具栏,下拉宽度)

    通过深入研究FCKeditor的文档和源代码,你可以实现更复杂的自定义,比如改变颜色、字体大小,甚至添加自定义功能。记住,每次修改后都要测试,确保编辑器的功能正常运行,同时保持良好的用户体验。

    fck web 编辑器

    1. **下载与解压**:首先,你需要从FCKweb编辑器的官方网站或者源代码仓库下载源代码,然后解压到本地目录。 2. **导入项目**:在Eclipse中,通过"File" -&gt; "Import" -&gt; "Existing Projects into Workspace"将...

    博客源代码

    本博客是仿照hi.baidu.com的功能所开发的。 文本编辑器采用的是FCK(和百度的一样) 相册是采用的.net初学者包里面的相册程序修改的。 逻辑层代码全部在AppCode里面,是初学者学习.net的一个好东西

    FCK文本编辑器

    6. **源码编辑模式**:除了WYSIWYG(所见即所得)模式外,还提供了源代码编辑模式,用户可以直接编辑HTML代码。 7. **配置灵活性**:FCKeditor允许开发者通过修改配置文件来定制编辑器的行为,例如调整工具栏布局、...

    FCK编辑器源码工程

    在【标题】"FCK编辑器源码工程"中,我们关注的是FCKeditor的源代码及其开发环境的构建。 **源码分析** FCKeditor的源码主要由JavaScript编写,兼容多种浏览器,包括Internet Explorer、Firefox、Chrome等。源码...

    FCK编辑器 asp版 精简无错

    4. **HTML代码查看**:允许用户在源代码视图下编辑HTML,适合有HTML基础的用户进行精细调整。 5. **多语言支持**:FCKeditor支持多种语言,包括简体中文,方便不同地区的用户使用。 6. **自定义配置**:开发者可以...

    FCK富文本编辑器

    6. **源码查看**:用户可以直接查看和编辑HTML源代码。 7. **样式和模板**:预设多种样式和模板,方便快速应用页面布局。 **二、FCKeditor的安装与配置** 1. **下载**:从官方网站或者第三方资源站点下载...

    文本编辑器FCK的用法

    - **源代码查看**:切换到源码模式,直接编辑HTML代码。 3. **事件处理**:FCKeditor提供了丰富的API,可以监听编辑器的各种事件,如`OnBlur`、`OnFocus`、`OnLoad`等,以便进行自定义功能扩展。 4. **保存内容**...

    JSP+FCK编辑器使用说明及中文问题

    1. 当使用非官方渠道获取的FCKeditor时,可能存在精简版或旧版本的问题,这可能导致某些功能缺失或兼容性问题,因此推荐从官方源获取最新版本。 2. FCKeditor 2.6版本与之前的版本有较大区别,2.6版本以后的版本可以...

    FCK-编辑器完整(源码)

    关于压缩包内的文件“FCK-编辑器”,这可能是包含了FCKeditor的所有源代码、示例、文档以及可能的配置文件。开发者可以通过解压并研究这些文件来了解FCKeditor的内部结构,或者根据自己的项目需求进行二次开发。 ...

    FCK集成图片批量上传

    5. 更新FCKeditor的图片源URL,指向新生成的带水印图片。 在FCKeditor的配置中,我们需要修改或添加一些设置以支持批量上传和水印功能。例如,可能需要修改`fckconfig.js`文件中的`FileBrowserUploadUrl`参数,使其...

    可以上传中文图片的FCK编辑器

    总的来说,通过理解和修改FCKeditor的源代码以及服务器端的上传处理逻辑,我们可以使FCKeditor支持中文图片名称的上传。这不仅扩展了FCKeditor的功能,也使其更加适应中文用户的使用习惯。对于想要深入学习和掌握...

Global site tag (gtag.js) - Google Analytics