欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FCKeditor 2.6控制上传文件的大小

程序员文章站 2022-03-20 13:30:26
...
对于上传文件的大小,FCKeditor并没有提供限制,可以通过修改源码来达到控制上传文件大小。
在Dispatcher类中,FCKeditor对文件的扩展名进行了一定的验证,通过验证的文件,可被上传。所以这里需要修改3个类的源代码。
1. Dispatcher:增加对文件大小的验证
2. UploadResponse:定义新的错误类型常量,及处理错误的方法
3. ConnectorServlet:引用包的修改
Dispatcher源码如下:
//检查文件扩展名
if (type.isDeniedExtension(FilenameUtils.getExtension(fileName))) {
uploadResponse = UploadResponse.getInvalidFileTypeError();
} else if (type.equals(ResourceType.IMAGE)
&& PropertiesLoader.isSecureImageUploads()
&& !UtilsFile.isImage(uplFile.getInputStream())) {
uploadResponse = UploadResponse.getInvalidFileTypeError();
} else {
//文件上传的操作这里省略
}

Dispatcher自定义源码如下:
//检查文件扩展名
if (type.isDeniedExtension(FilenameUtils.getExtension(fileName))) {
uploadResponse = UploadResponse.getInvalidFileTypeError();
} else if (type.equals(ResourceType.IMAGE)
&& PropertiesLoader.isSecureImageUploads()
&& !UtilsFile.isImage(uplFile.getInputStream())) {
uploadResponse = UploadResponse.getInvalidFileTypeError();
} else if(uplFile.getSize() > 10*1024) { //检查文件大小
uploadResponse = UploadResponse.getInvalidFileSizeError();
} else {
//文件上传的操作这里省略
}

自定义的UploadResponse类,除了内容全部拷贝FCKeditor中UploadResponse类的内容外,需要增加一个错误常量和一个错误方法:
/** Error number INVALID FILE SIZE */
public static final int EN_INVALID_FILE_SIZE_ERROR = 205;
public static UploadResponse getInvalidFileSizeError() {
LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData.getRequest());
return new UploadResponse(EN_INVALID_FILE_SIZE_ERROR, lm.getInvalidFileTypeSpecified());
}

以上服务器端修改完成。然后需要修改WebRoot/fckeditor/editor/dialog/fck_image/fck_image.js文件。在其中加入对我们新定义的205方法的alert语句:
case 204 : alert( "A file is too big. You should change the file" ) ;
return ;
相关标签: fckeditor