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;
if (false) 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,原来它的条件是这样的
RequestCycleHandler.isFileUploadEnabled(request),这个条件好像是用来判断上传是否是可用(EnabledUserAction)的还是禁用(DisabledUserAction)的,返回值为boolean值,如果返回的是true,那条件就会成立,走里面的子句,这个结果直接就是弹框提示203错误,说你没有权限,下面的一律不走,后来我改为了false,这个条件不成立,它就走了下面的,图片上传成功了,或者
!RequestCycleHandler.isFileUploadEnabled(request),这样也可以,只要条件为false,避开这个错误就可以了。。。。
其实按理说我配置的是EnabledUserAction,我上传的时候应该不会是DisabledUserAction,因为一开始能成功上传的时候,控制台输出的就是EnabledUserAction,但程序就是没有出现预期的效果,我只好改了这里,不过好在功能还是实现了,可能是后来项目需求增多,那个东西影响到了吧,毕竟开始就是可以的,我道行太浅了,没有深究,把它写出来,希望如果有跟我一样情况的人,不会没有头绪,因为那时候我被这个问题搞得头都大了,就是找不出来,(*^__^*) 嘻嘻……
分享到:
相关推荐
- **FCK2.6**:FCKeditor 2.6版本,一个JavaScript富文本编辑器。 **压缩包子文件的文件名称列表**:“phpfck”可能包含了整个FCKeditor 2.6的源代码,包括CSS、JavaScript、图片和其他必要的文件。在部署到服务器...
最新版的fck Java版本,
FCKeditor是一款经典的开源富文本编辑器,版本2.6是一个较早的版本,但仍然在许多项目中被广泛使用。这个压缩包包含了FCKeditor2.6的所有必要组件和配置文件,使得开发者可以直接在ASP.NET环境中快速集成并使用。 ...
以下是对FCKeditor 2.6及其相关知识点的详细说明: 1. **开源软件**:FCKeditor 2.6是开源的,这意味着它的源代码对公众开放,允许用户自定义、修改并分发。这种开放性促进了社区的发展和创新,同时也为开发者提供...
**FCK2.6(.net版)** FCKeditor的2.6版本是在.NET Framework 2.0环境下构建的,这表明它与Visual Studio 2005兼容。该版本可能包含了对.NET平台的优化和适配,确保了在ASP.NET环境中的稳定运行。开发者可以通过集成...
fckeditor-java-2.6 源代码 FCK fckeditor-java-2.6 源代码 FCK fckeditor-java-2.6 源代码 FCK fckeditor-java-2.6 源代码 FCK
本篇文章将详细探讨如何在FCKeditor 2.6中添加插入视频和音频功能,以便为用户提供更丰富的多媒体体验。 首先,理解FCKeditor的基本架构至关重要。FCKeditor由一系列插件构成,这些插件负责提供特定的功能,如图片...
【JSP+FCK编辑器使用说明及中文问题】 JSP+FCK编辑器是Java Web开发中常用的一款富文本编辑工具,它允许用户在网页上创建和编辑内容,类似于Word的功能,支持图片上传、链接插入等操作。FCKeditor在早期非常流行,...
集成了 1、fck最新的最新源代码2.5和最新的2.64的页面文件, 2、并修改了所有上传文件有关的...FckUserAction(控制关于文件的权限操作) 关于fck的其他基础配置网上太多就不列了 把工程导进去直接能跑,不能跑弄死我
目前,版本已更新至2.6,包含了多种语言和平台的支持。 2. **瘦身**:为了减小FCKEditor的体积,可以删除不必要的文件和文件夹。例如,删除所有以“_”开头的文件和文件夹,以及非PHP的连接器和上传文件,还可以根据...
jsp 程序调用fckeditor2.6 版本的 小例子 本人发现fckeditor2.6加 fckeditor for 2.3 的时候在上传中文文件的时候会出现乱码 所以本人...哈哈 lib 下的 FCK2.6.JAR 是我重新打的包 <br>qq 交流 361619004
FCKeditor是一款在Web开发中广泛使用的开源富文本编辑器,它允许用户在浏览器环境中进行类似Word的文本编辑操作。标题提到的是FCKeditor的2.6.6版本,这是一个相对成熟的版本,具有稳定性和兼容性的优点。相比于后来...
标题和描述中提到的问题主要涉及到FCKeditor的文件上传功能及其潜在的安全隐患。 首先,我们来理解这个问题的核心。FCKeditor允许用户在前端编辑内容,并可以上传图片、文档等媒体文件。这些上传功能是通过服务器端...
### fck上传等功能不能使用(fck和ie9的问题) #### 概述 在使用FCKeditor时,可能会遇到在Internet Explorer 9 (IE9) 浏览器中某些功能无法正常工作的情况,例如文件上传功能。这主要是由于IE9与FCKeditor之间...
本文将详细讨论如何在FCKeditor 2.6版本中添加插入视频和音频的功能,以及涉及到的相关技术知识点。 首先,我们需要理解FCKeditor的基本架构。FCKeditor由多个组件构成,包括核心编辑器部分、插件系统、皮肤、语言...
在这个"**fckeditor2.6 asp 版 配置好精简过**"的压缩包中,我们聚焦的是FCKeditor的一个特定版本——2.6,针对ASP(Active Server Pages)平台进行了优化和配置。ASP是一种由微软开发的服务器端脚本环境,允许...
### FCK在服务器上上传图片问题的解决方法 在网站开发过程中,经常需要用到富文本...此外,在实际操作过程中可能还会遇到其他一些细节问题,如权限设置、浏览器兼容性等,这些都需要开发者根据具体情况进行调整优化。
4. **权限提升**:如果FCK编辑器的权限设置不当,攻击者可能利用此工具获得更高的系统权限,例如读取或修改敏感文件。 5. **防护策略评估**:工具还可以评估网站对FCK编辑器漏洞的防护措施,提供改进建议,如过滤...
在本示例中,"C# .NET FCK 编辑器例子"着重解决了在服务器上无法上传图片的问题,这通常是由于服务器配置、文件路径或权限设置不正确导致的。 首先,我们需要理解FCKeditor的工作原理。它通过JavaScript与服务器端...