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 ;