研究了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;
}
總結
以上是生活随笔為你收集整理的研究了1天的ckfinder记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 回车表示_关于JAVA中回车符
- 下一篇: oracle 导出数据 utl,orac