CKEditor+CKFinder服务器临时文件存储路径的问题

公司做的一个小项目,新闻发布模块用的CKEditor+CKFinder,基本的使用没有什么问题,但存在巨大隐患。时间原因,本文没有提供CKEditor+CKFinder的入门配置,请谅解。

环境:Windows+Myeclipse+Tomcat7+Java1.7+ckeditor-java3.5.3+CKFinderJava-2.6.0

问题:这是一个不大的门户网站项目,整个项目是打成一个war包放在一个tomcat服务器下的。问题来了,因为没有单独的静态资源服务器,CKEditor+CKFinder上传文件时的存储路径在临时文件夹userfiles下面,tomcat正常运行的时候是没有问题的,但是一关闭,临时文件夹没了(也许你会说,tomcat关闭之前手动备份一下——我只能说,计算机很复杂,而你想法太单纯了。不是小编吹毛求疵,是这个问题真的很严重。而且小编觉得,作为一个程序员,我能用程序来做的事情,坚决不用人来做)。这会导致之前发的新闻显示不出图片,文件链接错误,因为新闻存到数据库,图片文件用的都是src路径。



开始上网查,查来查去都是些修改ckfinder的config.js文件,小编表示水平有限,网上的方法没能试出来。最后还是用自己最简单直接的思维来解决这个问题——文件上传到服务器的时候,同时上传一份到项目外的目录下面,好的,我们来看插件的源码。FileUploadCommand.class,对应的java文件在ckfinder的源代码中,路径如图。(感谢开源)



源码第279行,可以看到fileUpload方法调用了saveTemporaryFile()方法


         

那我们再看saveTemporaryFile方法,应该可以看懂是什么意思了



下面,我们把自己的项目中创建一个跟插件完全一样的包名,只复制FileUploadCommand.java文件,如图


这样的话,操作插件的时候,如果有文件上传,就会执行这个java文件里面的方法,读者可以自己试一试。下面我们就简单地修改一下代码,做一个备份就好了。(修改完了之后也可以用这个java的.class文件覆盖jar包中的class文件,这样项目看起来会干净些。class文件怎么弄?不用你手动去编译,运行项目,去tomcat下面,项目\WEB-INF\classes下面去找)


再运行项目,上传文件,你创建的目录和t项目下面的临时目录下面就都有了文件了。


注意:这是小编的个人项目上做测试,有些地方编码纯属为了节约时间,让和我一样的菜鸟方便理解,快速解决问题,如果是真实项目,记得把文件路径中的\\分隔符换成file.separator(),再加一些必要的非空判断,小编水平有限,没有能力误导大家呦!


最后:这是小编的第一篇博文,希望大家多多指教,如有不周之处,还望批评指正。本人偏向java后台开发,如果您有更好更简便的方法,请指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值