3.控制上传文件大小(目前不同版本实现可能不同,但机制是一样的)
和上传增加自动标识列一样,同样是在增加UUID的Post方法中进行判断文件大小,FCK并没有提供这种机制
在上传的对象中有判断文件大小的方法
//控制上传文件大小
if(uplFile.getSize() > 10 * 1024){
LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
.getRequest());
return new UploadResponse(204, null, null, lm
.getInvalidCurrentFolderSpecified());
}
以上如果文件大于10K的话就不能通过,关于返回的对象,其实是供客户端调用的。
对于这个对象可以参考其他判断中返回的对象例如:
在上传一开始就有如下判断:
if (!RequestCycleHandler.isEnabledForFileUpload(request))
uploadResponse = UploadResponse.getFileUploadDisabledError();
// check parameters
else if (!Command.isValidForPost(context.getCommandStr()))
uploadResponse = UploadResponse.getInvalidCommandError();
else if (!ResourceType.isValidType(context.getTypeStr()))
uploadResponse = UploadResponse.getInvalidResourceTypeError();
else if (!UtilsFile.isValidPath(context.getCurrentFolderStr()))
uploadResponse = UploadResponse.getInvalidCurrentFolderError();
else {
就是如果条件不符合,则有一个UploadResponse对象被返回,到这个类的各个方法中看看,进入UploadResponse类可以看到他定义了许多供返回的常量
/** Creates a <code>INVALID RESOURCE TYPE</code> error. */
public static UploadResponse getInvalidResourceTypeError() {
LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
.getRequest());
return new UploadResponse(EN_CUSTOM_ERROR, null, null, lm
.getInvalidResouceTypeSpecified());
}
通过他的一个方法可以看出,创建一个LocalizedMessages对象,然后返回一个带有标识的UploadResponse对象。所以在文件太大不符合要求时可以这样返回
LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
.getRequest());
return new UploadResponse(204, null, null, lm
.getInvalidCurrentFolderSpecified());
这个204是自己定义的,但是不要和FCK定义的重复,即不要和UploadResponse类中定义的常量重复。
返回204 标识后客户端会接受,接收错误码的页面是 fck_image.html ,具体处理错误码的地方是该页面引入的一个JS文件,在fck_image.js中控制的找到function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
方法,可以看到,这里接受的错误码!在这里增加自己的错误码,并给予提示。同时可以在这里修改文件错误时各种情况的提示信息
增加
case 204: alert( "文件大小超出限制" ) ; return ;
,这样就完成了,上传图片时不能大于10K的功能!注意的是,所有上传类型都不能大于10K,这样设置的话!