研究了1天的ckfinder记录

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文件,红色部分是自己写的注释

<config> <!-- <imgWidth>1920</imgWidth>
<imgHeight>600</imgHeight> 是设置压缩图片最大的高宽 -->

<enabled>true</enabled>
<baseDir></baseDir>
<baseURL>/userfiles/</baseURL>
<licenseKey></licenseKey>
<licenseName></licenseName>
<imgWidth>1920</imgWidth>
<imgHeight>600</imgHeight>
<imgQuality>80</imgQuality>
<uriEncoding>UTF-8</uriEncoding>
<forceASCII>false</forceASCII>
    <disallowUnsafeCharacters>false</disallowUnsafeCharacters>
<userRoleSessionVar>CKFinder_UserRole</userRoleSessionVar>
<checkDoubleExtension>true</checkDoubleExtension>
<checkSizeAfterScaling>true</checkSizeAfterScaling>
<secureImageUploads>true</secureImageUploads>
<htmlExtensions>html,htm,xml,js</htmlExtensions>
<hideFolders>
<folder>.*</folder>
<folder>CVS</folder>
</hideFolders>
<hideFiles>
<file>.*</file>
</hideFiles>
<defaultResourceTypes></defaultResourceTypes>
<types>
<type name="files">
<url>%BASE_URL%files/</url>
<directory>%BASE_DIR%files</directory>
<maxSize>0</maxSize> <!-- 上传的大小不限制时,为0,否则就是类似的1MB -->
<allowedExtensions>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</allowedExtensions>
<deniedExtensions></deniedExtensions>
</type>
<type name="images">
<url>%BASE_URL%images/</url>
<directory>%BASE_DIR%images</directory>
<maxSize>0</maxSize> <!-- 上传的大小不限制时,为0,否则就是类似的1MB -->
<allowedExtensions>bmp,gif,jpeg,jpg,png</allowedExtensions>
<deniedExtensions></deniedExtensions>
</type>
<type name="flash">
<url>%BASE_URL%flash/</url>
<directory>%BASE_DIR%flash</directory>
<maxSize>0</maxSize> <!-- 上传的大小不限制时,为0,否则就是类似的1MB -->
<allowedExtensions>swf,flv</allowedExtensions>
<deniedExtensions></deniedExtensions>
</type>
</types>
<accessControls>
<accessControl>
<role>*</role>
<resourceType>*</resourceType>
<folder>/</folder>
<folderView>false</folderView>
<folderCreate>false</folderCreate>
<folderRename>false</folderRename>
<folderDelete>false</folderDelete>
<fileView>false</fileView>
<fileUpload>false</fileUpload>
<fileRename>false</fileRename>
<fileDelete>false</fileDelete>
</accessControl>
</accessControls>
<thumbs> <!--下面的高宽是用来设置上传图片时展示的div的大小,并且这个高宽一定不能大于顶部设置的高宽大小,否则删除失败,一直提示跳过,并且手动删除时,也会失败,提示正在使用 <imgWidth>1920</imgWidth>
<imgHeight>600</imgHeight>-->

<enabled>true</enabled>
<url>%BASE_URL%_thumbs/</url>
<directory>%BASE_DIR%_thumbs</directory>
<directAccess>false</directAccess>
<maxWidth>1900</maxWidth>
<maxHeight>600</maxHeight>
<quality>80</quality>
</thumbs>
<plugins>
<plugin>
<name>imageresize</name>
<class>com.ckfinder.connector.plugins.ImageResize</class>
<params>
<param name="smallThumb" value="90x90"></param>
<param name="mediumThumb" value="120x120"></param>
<param name="largeThumb" value="180x180"></param>
</params>
</plugin>
<plugin>
<name>fileeditor</name>
<class>com.ckfinder.connector.plugins.FileEditor</class>
<params></params>
</plugin>
</plugins>
<basePathBuilderImpl>com.ckfinder.connector.configuration.ConfigurationPathBuilder</basePathBuilderImpl>
</config>


 2:更改了配置,要是更改 assets\admin\ckfinder\ckfinder.js  查找class="image"的位置


/*'<div class="image" ><div role="img" style="background-size: cover;width: '
+ U.app.config.thumbsWidth
+ 'px; height: '
+ U.app.config.thumbsHeight
+ 'px"></div></div>');*/

注释上面的用下面的来更改展示图片的大小
'<div class="image" style="width: 320px; height:240px"><div role="img" style="background-size: cover;width: 100%; height: 100%"></div></div>');



3.遇到一个英文图片可以上传,但是中文图片上传不在显示,也就上传图片在

这个路径下图片不展示:userManagePic\userfiles\admin\_thumbs\images\cms\article\2017\06

自己本地就是好的,中英文都是,但是同事的就只是英文,这个时候就是Tomcat的问题了,找到conf下的server.xml 增加中文转化URIEncoding="UTF-8" :如下

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"  URIEncoding="UTF-8" />



4:如下图把右击图片,弹出框里面的改变尺寸,下载,重命名注释,则更改assets\admin\ckfinder\ckfinder.js,格式化之后大约8730行,加一个判断

 if(v!='改变尺寸'&&v!='下载'){
                r.push('<span class="cke_menuitem"><a id="', s, '" class="', u, '" href="javascript:void(\'', (y.label || '').replace("'", ''), '\')" title="', y.label, '" tabindex="-1"_cke_focus=1 hidefocus="true" role="menuitem"' + (w ? 'aria-haspopup="true"': '') + (t == a.aY ? 'aria-disabled="true"': '') + (t == a.eV ? 'aria-pressed="true"': ''));
                     if (f.opera || f.gecko && f.mac) r.push(' οnkeypress="return false;"');
                     if (f.gecko) r.push(' οnblur="this.style.cssText = this.style.cssText;"');
                     var x = (y.rD || 0) * -16;
                     r.push(' οnmοuseοver="CKFinder.tools.callFunction(', p._.qz, ',', q, ');" οnmοuseοut="CKFinder.tools.callFunction(', p._.qm, ',', q, ');" οnclick="CKFinder.tools.callFunction(', p._.ql, ',', q, '); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"' + (y.icon ? ' style="background-image:url(' + a.getUrl(y.icon) + ');background-position:0 ' + x + 'px;"': '') + '></span></span>' + '<span class="cke_label">');
                     if (y.hQ) r.push('<span class="cke_menuarrow"></span>');
                     r.push(v, '</span></a></span>'); 
                 }


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;
}









  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值