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 ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最近做了一个文章管理的系统,用到在线编辑器,修改了一下现在能实现音频,视频,图片,附件,Flash等文件的上传。费了好大的功夫。。 FCKeditor应用在ASP.NET上,需要两组文件,一组是FCKeditor本身,另一个是用于ASP.NET的FCKeditor控件(分为1.1和2.0两个版本,这里使用2.0版本)。 1. 将FCKeditor加入到项目中 解压FCKeditor编辑器,得到文件夹fckeditor,复制此文件夹到Web应用的项目下(也可以是子孙目录下)。 解压FCKeditor控件,在其子目录bin/Release/2.0下有一个程序集。在Web应用的项目中引用该程序集。 2. 在页面中使用FCKeditor 有两种方式。 (1)手工编码 在页面中加入ASP.NET指令: 然后在需要的地方加入FCKeditor控件: (2)集成到Visual Studio工具箱 打开一ASP.NET页面,展开Toolbox,打开右键菜单,选择“Choose Items ...”,在出现的“Choose Toolbox Items”会话框的“.NET Framework Components”选项卡中选择“Browse”,找到并选中FCKeditor程序集,打开后回到“Choose Toolbox Items”窗口,点击“OK”,完成控件导入。 这时,在Toolbox的General分类下出现了一个名为FCKeditor的控件,可以像使用Visual Studio内置控件一样使用它。 3. 配置FCKeditor编辑器路径 在页面中,使用的是FCKeditor控件,该控件需要知道FCKeditor编辑器文件组的路径。有两种配置方法。 (1)配置web.config 在appSettings配置节中加入 使用这种配置方法后,对于项目中任何一个页面中用到的FCKeditor控件,都不用再配置其BasePath属性。 (2)直接对用到的FCKeditor控件进行配置 在页面代码中设置FCKeditor的属性BasePath为FCKeditor编辑器文件组的路径,或者在Page_Init事件处理器中设置其BasePath的值。 4. 配置FCKeditor编辑器文件上传路径 在web.config的appSettings配置节中加入 或者 这样,就完成了FCKeditor向ASP.NET页面的集成工作。 二、配置FCKeditor 按照FCKeditor的默认配置,可以完成一些常用的HTML可视化编辑工作,但在实际应用中,还需要对其做进一步的配置。FCKeditor控件的可配置属性不多,且配置后只能作用于一个单一实例。实际上,需要对FCKeditor编辑器文件组中的通用配置文件/fckconfig.js和ASP.NET专用文件上传管理代码文件/editor/filemanager/connectors/aspx/config.ascx进行配置。 1. 配置控件语言 FCKeditor是自动探测浏览器所使用的语言编码的,其默认语言是英文。修改配置行"FCKConfig.DefaultLanguage = 'en';"为'zh-cn',采用中文为默认语言。 2. 配置控件应用技术 FCKeditor默认是用于php技术的。修改配置行"var _FileBrowserLanguage = 'php';"和"var _
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值