关于FCK2.6中的203权限问题

2010年11月份的时候做了一个微博项目,项目中撰写博客这个功能用到了fck2.6编辑器,里面有一个上传图片的功能,刚开始项目上线的时候,还是可以上传图片的,但是过了大概不到一个月的时间,线上就不能上传图片了,本地还是可以的,但到最后连本地的也不行了。
一点击上传图片,他就会弹出一个框提示说
“Security error. You probably don't have enough permissions to upload. Please check your server.”
这句话的意思是说“您可能没有足够的权限来上传。”,上网查了很多资料,发现该配置的我也配置了,没有缺少什么,比如说fckeditor.properties文件等,还要把什么domain d等的去掉,检查服务器权限,等等,就是不管用,后来不经意间发现每次我一点击上传图片那个东西的时候,控制台都会输出这句话
“12000 [http-8080-1] INFO net.fckeditor.handlers.RequestCycleHandler -UserAction initialized net.fckeditor.requestcycle.impl.DisabledUserAction
”其中那个DisabledUserAction引起了我的注意,因为我的fckeditor.properties里面是这样配置的

connector.userActionImpl=net.fckeditor.requestcycle.impl.EnabledUserAction
connector.userFilesPath=/upload/blog
connector.userFilesAbsolutePath=/upload/blog
我的这个权限是EnabledUserAction是可用的,但是只要我一点击上传图片这个功能,控制台就输出DisabledUserAction,不可用,于是我调试了源码,发现上传图片后,他走的是net.fckeditor.connector.MyDispatcher中的这个方法
@SuppressWarnings("unchecked")
UploadResponse doPost(final HttpServletRequest request) {
logger.debug("Entering Dispatcher#doPost");

Context context = ThreadLocalData.getContext();
context.logBaseParameters();
UploadResponse uploadResponse = null;
[color=red]if (false)[/color] 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 {

// call the Connector#fileUpload
ResourceType type = context.getDefaultResourceType();
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(request);
// We upload just one file at the same time
FileItem uplFile = items.get(0);
// Some browsers transfer the entire source path not just the
// filename
String fileName = FilenameUtils.getName(uplFile.getName());
String extension = FilenameUtils.getExtension(fileName);
fileName = UUID.randomUUID().toString().replace("-","")+"."+extension;
logger.debug("Parameter NewFile: {}", fileName);
// check the extension
if (type.isDeniedExtension(extension))
uploadResponse = UploadResponse.getInvalidFileTypeError();
// Secure image check (can't be done if QuickUpload)
else if (type.equals(ResourceType.IMAGE)
&& PropertiesLoader.isSecureImageUploads()
&& !UtilsFile.isImage(uplFile.getInputStream())) {
uploadResponse = UploadResponse.getInvalidFileTypeError();
} else {
String sanitizedFileName = UtilsFile
.sanitizeFileName(fileName);
logger.debug("Parameter NewFile (sanitized): {}",
sanitizedFileName);
String newFileName = connector.fileUpload(type, context
.getCurrentFolderStr(), sanitizedFileName, uplFile
.getInputStream());
String fileUrl = UtilsResponse.fileUrl(RequestCycleHandler
.getUserFilesPath(request), type, context
.getCurrentFolderStr(), newFileName);

if (sanitizedFileName.equals(newFileName)){
uploadResponse = UploadResponse.getOK(fileUrl);
}else {
uploadResponse = UploadResponse.getFileRenamedWarning(fileUrl, newFileName);
logger.debug("Parameter NewFile (renamed): {}",
newFileName);
}
}

uplFile.delete();

} catch (InvalidCurrentFolderException e) {
uploadResponse = UploadResponse.getInvalidCurrentFolderError();
} catch (WriteException e) {
uploadResponse = UploadResponse.getFileUploadWriteError();
} catch (IOException e) {
uploadResponse = UploadResponse.getFileUploadWriteError();
} catch (FileUploadException e) {
uploadResponse = UploadResponse.getFileUploadWriteError();
}
}

logger.debug("Exiting Dispatcher#doPost");
return uploadResponse;
}
就是if判断条件中的第一个条件,里面现在是false,原来它的条件是这样的[color=red]RequestCycleHandler.isFileUploadEnabled(request)[/color],这个条件好像是用来判断上传是否是可用(EnabledUserAction)的还是禁用(DisabledUserAction)的,返回值为boolean值,如果返回的是true,那条件就会成立,走里面的子句,这个结果直接就是弹框提示203错误,说你没有权限,下面的一律不走,后来我改为了false,这个条件不成立,它就走了下面的,图片上传成功了,或者[color=red]!RequestCycleHandler.isFileUploadEnabled(request)[/color],这样也可以,只要条件为false,避开这个错误就可以了。。。。

其实按理说我配置的是EnabledUserAction,我上传的时候应该不会是DisabledUserAction,因为一开始能成功上传的时候,控制台输出的就是EnabledUserAction,但程序就是没有出现预期的效果,我只好改了这里,不过好在功能还是实现了,可能是后来项目需求增多,那个东西影响到了吧,毕竟开始就是可以的,我道行太浅了,没有深究,把它写出来,希望如果有跟我一样情况的人,不会没有头绪,因为那时候我被这个问题搞得头都大了,就是找不出来,(*^__^*) 嘻嘻……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值