`
eric.zhang
  • 浏览: 126019 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

fckeditor - 文件上传(4)

阅读更多
fckeditor默认不支持文件上传,需要下载web服务器端程序(fckeditor.java),并进行配置

1.在web.xml中加入ConnectorServlet的配置信息

<servlet>
  <servlet-name>Connector</servlet-name>
  <servlet-class>
   net.fckeditor.connector.ConnectorServlet
  </servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>Connector</servlet-name>
  <url-pattern>
   /fckeditor/editor/filemanager/connectors/*
  </url-pattern>
</servlet-mapping>


2.在classpath路径上创建fckeditor.properties(在src文件夹下创建)

connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl


乱码问题



由于fckeditor未考虑中文乱码问题,所以需要对ConnectorServlet做修改



解决fckeditor创建文件夹中文乱码问题

在ConnectorServlet的doGet方法中找到String newFolderStr = UtilsFile.sanitizeFolderName(newFolderName);这行代码,在其上添加如下2行代码。

//NewFolderName为新创建的文件夹名称,先用iso-8859-1编码将字符串还原成字节数组,在用utf-8重新编码
String newFolderName = request.getParameter("NewFolderName");
newFolderName = new String(newFolderName.getBytes("iso-8859-1"), "utf-8");

String newFolderStr = UtilsFile.sanitizeFolderName(newFolderName);
解决上传文件名为中文文件时出现乱码
fckeditor在java平台采用的是commons-upload组件进行文件上传,只要修改ServletFileUpload的headerEncoding属性为utf-8就能解决上传文件名是中文时所出现的乱码问题。在ConnectorServlet的doPost方法中找到ServletFileUpload upload = new ServletFileUpload(factory);在其后加入下面代码



FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);

//解决上传文件名为中文名时出现乱码
upload.setHeaderEncoding("utf-8");




中文图片不能引用
修改server.xml 端口为8080的Connector,添加属性URIEncoding="UTF-8"

<Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" /> 


解决上传文件名重名问题

上传文件名用uuid随机生成的32位字符串代替,防止文件名重复

String filename = FilenameUtils.getName(rawName);
String baseName = FilenameUtils.removeExtension(filename);
String extension = FilenameUtils.getExtension(filename);

 //上传文件名用uuid随机生成的32位字符串代替,防止文件名重复
filename=UUID.randomUUID().toString().replace("-", "")+"."+extension;

控制允许上传文件的文件类型
fckeditor把上传的文件分为四种:file,Image,Flash,Media
fckeditor会对上传文件的类型进行两次验证(前台javascript验证和后台java验证)所以需要对myconfig.js和fckeditor.propertise进行配置
例如:限制上传图片格式为gif和png
在myconfig.js增加下面配置(可参看fckconfig.js的具体配置选项)

FCKConfig.ImageUploadAllowedExtensions = ".(gif|png)$" ;


在fckeditor.propertise进行配置(可参看)

connector.resourceType.image.extensions.allowed=gif|png

控制允许上传文件的文件大小

1.在服务端的servlet中,在保存文件之前先判断一下文件大小,如果超出限制,就传递一个自定义的错误码,并且不再保存文件,在ConnectorServlet的doPost方法中找到if (!ExtensionsHandler.isAllowed(resourceType, extension))
在后面添加else if语句块

//如果文件的扩展名不允许上传
if (!ExtensionsHandler.isAllowed(resourceType, extension))
	ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
//如果文件大小超出限制10k
else if(uplFile.getSize()>10*1024){
//传递一个自定义的错误码
	ur = new UploadResponse(204);
}
//如果不存在以上错误,则保存文件
else {
	...

}


2.修改对应的页面中的回调函数,增加对这个自定义的错误码的处理
找到fckeditor/editor/filemanager/browser/default/frmupload.html和fckeditor/editor/dialog/fck_image/fck_image.js中的OnUploadCompleted方法,
在switch 语句块中添加如下代码

case 204 :
   alert( '文件太大' ) ;
   break ;
分享到:
评论

相关推荐

    fckeditor-java-2.6-bin

    4. **支持多种文件上传**:FCKeditor内置了文件管理器,允许用户上传图片、文档和其他类型文件,并在编辑器中直接引用。 5. **WYSIWYG(所见即所得)编辑**:用户在编辑时看到的即为最终网页效果,提高了编辑效率。...

    fckeditor-java-2.4.1-src.zip_FCKeditor jsp_fckeditor-java_fcked

    在实际应用中,使用FCKeditor-java-2.4.1,开发者需要按照官方文档或提供的示例进行配置,包括设置编辑器的路径、初始化编辑器对象、处理上传文件等功能。同时,为了保证编辑器与服务器端的通信安全,还需要考虑如何...

    fckeditor-java-2.6-src

    要将FCKeditor集成到Java应用中,你需要了解如何在Servlet或JSP中嵌入编辑器,配置相应的路径,处理上传的文件,以及在服务器端接收和返回编辑内容。这通常涉及设置JavaScript变量,配置URL映射,以及处理HTTP请求...

    fckeditor-java-2.5-bin.zip

    4. **实现服务器接口**:使用提供的Java API实现文件上传、内容保存等接口,确保与前端编辑器的通信。 5. **测试与优化**:进行功能测试,确保编辑器在各种浏览器和操作系统上的表现,并根据反馈进行性能和用户体验...

    fckeditor-java-demo-2.6 修改

    对fckeditor 文件上传功能的修改 1.文件上传绝对路径配置 2.文件上传按上传日期保存 3.浏览上传图片文件和flash文件添加预览功能

    fckeditor2.6.3b+fckeditor-java-2.4+slf4j-1.5.2

    2. 创建一个Servlet来处理FCKeditor的请求,如文件上传。 3. 配置web.xml,将Servlet映射到特定URL。 4. 在JSP页面中实例化FCKeditor,并设置编辑器的属性,如宽度、高度、初始内容等。 5. 测试编辑器的功能,确保...

    FCKeditor-2.3.zip

    3. **图片和媒体管理**:用户可以直接在编辑器中上传和插入图片,甚至包括视频和音频文件,编辑器内置了简单的媒体管理功能。 4. **HTML代码查看与编辑**:对于需要直接编辑HTML代码的高级用户,FCKeditor提供了源...

    fckeditor-java-2.4.1-src

    - 学习如何通过Java API控制编辑器行为,如预设初始内容、处理文件上传等。 - 探究如何创建自定义插件,增强编辑器功能。 - 针对具体项目需求,定制编辑器界面和功能,使其更符合用户体验。 - 优化服务器端的性能,...

    fckeditor-java-core-2.4.1

    5. **API接口**:对于开发者来说,FCKeditor提供了丰富的API接口,可以方便地与后端服务器进行交互,比如保存编辑的内容、上传文件等。 在压缩包文件名称列表中提到的 "fckeditor-java-core-2.4.1" 可能包含以下...

    fckeditor2.6.4+fckeditor-java-2.4.1配置及中文乱码解决

    包括fckeditor2.6.4+fckeditor-java-2.4.1配置所需资源包及fckeditor-java-2.4.1源码和配置说明文档。 配置中解决了中文乱码,并为上传文件自动创建日期文件夹。

    FCKeditor_2.6.4+fckeditor-java-2.4.1_BMW修改版

    4、限制上传文件大小(这个也设置了可以自主修改,找到fckeditor.properties文件最后的地方,# maxFileSize 1M connector.resource.maxFileSize=1048576,单位是字节) 5、把里边没用的文件都删除了,呵呵 其中的...

    FCKeditor_2.6.4和FCKeditor-2.3

    此外,文件上传功能需要安全配置,限制可上传的文件类型和大小,防止恶意文件的上传。 8. **后续发展** 随着时间的发展,FCKeditor已经进化为CKEditor,这是一个持续更新和维护的项目,具有更高的性能和更多的功能...

    FCKeditor-2.2.gz

    6. **服务器端处理**:编写Java代码处理来自FCKeditor的上传文件请求,保存并返回文件路径或URL。 通过以上步骤,开发者可以在JSP应用中实现一个功能强大且易于使用的富文本编辑器,提升用户体验并简化内容管理。...

    fckeditor-java-demo

    4. **jsp或servlet代码**:用于处理编辑器的服务器端逻辑,如文件上传、保存内容等。 5. **CSS和JavaScript文件**:FCKeditor的样式表和脚本,用于实现编辑器的界面和交互功能。 6. **文档和示例代码**:解释如何...

    fckeditor-java-2.4-src.rar源码

    4. 在服务器端实现逻辑,例如处理文件上传、链接生成等。 六、性能优化与调试 深入理解源码后,开发者可以针对性地优化性能,例如减少不必要的网络通信、提高响应速度等。同时,源码也是调试问题的关键,通过阅读和...

    FCKEditor2.6和fckeditor-java2.4的使用.doc

    - 我们需要关注的是`editor`文件夹以及`fckeditor`目录下的五个文件:`fckconfig.js`、`fckeditor.js`、`fckpackager.xml`、`fckstyles.xml`、`fcktemplates.xml`。 2. **部署至web应用**: - 将上述文件复制到...

    fckeditor-java-2.4源码

    - **文件上传**:FCKeditor的Java源码中,文件上传通过`com.fckeditor.connector.UploadCommand`类实现。它解析请求参数,处理文件的临时存储和最终保存,并返回上传结果。 - **内容处理**:`...

    fckeditor-java-core-2.4.jar 解决中文图片上传乱码问题

    fckeditor-java-core-2.4.jar 中文乱码 文件重名 中文文件夹

Global site tag (gtag.js) - Google Analytics