FCKeditor 2.6.6 上传中文图片名乱码,新建中文 文件夹名乱码 上传权限 解决

看FCKeditor网上教程的时候,给的demo是以2.6.3版本的 不是最新版。讲到上传中文图片名乱码,新建中文 文件夹名乱码的时候,发现修改java比较麻烦,ConnectorServlet这个类的部分实现都在Dispatcher.java这个类里 修改起来不方便,(页面的charset是utf-8这个是没问题的,就是在servlet里面对request获取的参数未设置 charEncoding造成的)后来网上搜了下方案,结果解决中文乱码的问题了,在这里贴出来跟大家分享下

解决办法: 
  web容器的编码要与FCKeditor默认的编码UTF-8一致,如果使用的是Tomcat,需修改 
tomcat服务器中conf目录下的server.xml。如下: 
  <Connector port="8080" maxHttpHeaderSize="8192" 
  maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
  enableLookups="false" redirectPort="8443" acceptCount="100" 
  connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" /> 
  <Connector port="8009" 
  enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="utf-8"/> 
其实就是在原来的基础上添加URIEncoding的属性值为utf-8。

后来上传中文文件与创建中文目录都没问题了(附件图片)

另外一种解决方法呢,你可以让程序自动给替换上传的文件名称,让上传文件名随机自动生成防止无法显示

在net.fckeditor.connector包中增加一个随机生成文件名的类:

package net.fckeditor.connector;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class RandomName {

public static String ConfirmId(int sLen) {
   String date = new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar
     .getInstance().getTime());
   String base = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   StringBuffer temp = new StringBuffer();
   temp.append(date);
   for (int i = 0; i < sLen; i++) {
    int p = (int) (Math.random() * 37);
    if (p > 35) {
     p = 35;
    }
    temp.append(base.substring(p, p + 1));
   }
   return temp.toString();
}

} 

 修改类net.fckeditor.connector.Dispatcher:

找到String fileName = FilenameUtils.getName(uplFile.getName());

在下面增加如下内容:

String extension = FilenameUtils.getExtension(fileName);
StringBuffer fileRandomName=new StringBuffer();
fileRandomName.append(RandomName.ConfirmId(10));
fileRandomName.append(".");
fileRandomName.append(extension);
fileName=fileRandomName.toString();

即可实现上传文件文件名自动更改,以防止不符合规则的文件名或中文名出现访问问题。

最新的JAVA版,已经重写了部分代码,对于以前的版本,修改的地方是在net.fckeditor.connector.ConnectorServlet这个类里,

找到如下内容:

// We upload only one file at the same time
FileItem uplFile = items.get(0);
String rawName = UtilsFile.sanitizeFileName(uplFile.getName());
String filename = FilenameUtils.getName(rawName);
String extension = FilenameUtils.getExtension(filename);

增加如下内容:

StringBuffer fileRandomName=new StringBuffer();
fileRandomName.append(RandomName.ConfirmId(10));
fileRandomName.append(".");
fileRandomName.append(extension);
filename=fileRandomName.toString();

 

 

如果是上传出现目录无权限 的查看classes目录下是否存在 fckeditor.properties文件

fckeditor.properties文件完整内容:

#
# FCKeditor - The text editor for Internet - http://www.fckeditor.net
# Copyright (C) 2004-2009 Frederico Caldeira Knabben
#
# == BEGIN LICENSE ==
#
# Licensed under the terms of any of the following licenses at your
# choice:
#
# - GNU General Public License Version 2 or later (the "GPL")
#    http://www.gnu.org/licenses/gpl.html
#
# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
#    http://www.gnu.org/licenses/lgpl.html
#
# - Mozilla Public License Version 1.1 or later (the "MPL")
#    http://www.mozilla.org/MPL/MPL-1.1.html
#
# == END LICENSE ==
#
# @version $Id: fckeditor.properties 2869 2009-01-09 22:01:33Z mosipov $

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值