1:ckfinder 设置固定的文件夹存放图片,不放项目下面
1.普通的ckfinde存放的图片是放在项目下面的userfiles下。 我的做法是放在Tomcat下webapps下一个固定的文件夹(userManagePic)用来放文件userfiles,自己项目的名字(userManage)
2.修改CKFinderConfig.java,CKFinderConnectorServlet.java,UserfilesDownloadServlet.java下的代码,把所有取到本项目地址的地方用‘userManagePic’替换这个‘userManage’,因为其他的物理地址都是一样的,可直接替换使用。主要换:定义this.baseDir,this.baseURL的地方,其他不变。
2:ckfinder 上传大的轮播图时,展示在上传页面时还是小图片,因为这样比较美观
1:更改ckfinder.xml文件,红色部分是自己写的注释
true
/userfiles/
1920
600
80
UTF-8
false
false
CKFinder_UserRole
true
true
true
html,htm,xml,js
.*
CVS
.*
%BASE_URL%files/
%BASE_DIR%files
0
7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip
%BASE_URL%images/
%BASE_DIR%images
0
bmp,gif,jpeg,jpg,png
%BASE_URL%flash/
%BASE_DIR%flash
0
swf,flv
*
*
/
false
false
false
false
false
false
false
false
true
%BASE_URL%_thumbs/
%BASE_DIR%_thumbs
false
1900
600
80
imageresize
com.ckfinder.connector.plugins.ImageResize
fileeditor
com.ckfinder.connector.plugins.FileEditor
com.ckfinder.connector.configuration.ConfigurationPathBuilder
2:更改了配置,要是更改 assets\admin\ckfinder\ckfinder.js 查找class=”image”的位置
/*’
+ U.app.config.thumbsWidth
+ ‘px; height: ‘
+ U.app.config.thumbsHeight
+ ‘px”>
‘);*/
注释上面的用下面的来更改展示图片的大小
‘
‘);
3.遇到一个英文图片可以上传,但是中文图片上传不在显示,也就上传图片在
这个路径下图片不展示:userManagePic\userfiles\admin\_thumbs\images\cms\article\2017\06
自己本地就是好的,中英文都是,但是同事的就只是英文,这个时候就是Tomcat的问题了,找到conf下的server.xml 增加中文转化URIEncoding=”UTF-8″ :如下
connectionTimeout=”20000″
redirectPort=”8443″ URIEncoding=”UTF-8″ />
4:如下图把右击图片,弹出框里面的改变尺寸,下载,重命名注释,则更改assets\admin\ckfinder\ckfinder.js,格式化之后大约8730行,加一个判断
if(v!=’改变尺寸’&&v!=’下载’){
r.push(‘‘);
}
5:遇到小图片上传,然后删除失败,大图片上传删除成功解决方案
当小图片的尺寸小于ckfinder.xml里面的maxWidth和maxHeight这个时,上传删除时会被占用,而删除失败,查看了源代码在上传的代码中并没有发现读取的流未被关闭,找了好久,无奈了,只有强制解除对文件的占用我用的ckfinder的版本是2.3的比较老的一版,因为这是之前同事用的,我直接拿来用的,没想到测试测出各种不同的问题,就只能改改改了。下载源码:ckfinder_java_2.3.zip 解压后放在自己的项目目录下,找到删除图片的地方,这个文件下userManage\src\main\java\com\ckfinder\connector\utils\FileUtils.java 。
public static boolean delete(final File file) throws IOException {
if (file.isDirectory()) {
for (String item : file.list()) {
File subFile = new File(file.getAbsolutePath()
+ File.separator + item);
if (!delete(subFile)) {
return false;
}
}
}
/新加判断*/
boolean result = file.delete();
int tryCount = 0;
while (!result && tryCount++ < 10) {
System.gc(); //回收资源
result = file.delete();
}
/新加判断*/
return result;
}
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224581.html原文链接:https://javaforall.net
