javascript
Spring Boot集成CKFinder
2019獨角獸企業重金招聘Python工程師標準>>>
Spring Boot集成CKFinder,實現瀏覽功能。
前言
上一篇記錄了Spring Boot集成CKEditor,這里記錄Spring Boot集成CKFinder實現瀏覽功能,詳細的配置可以參考ckeditor和ckfinder集成詳細配置及其優化,這里講在Spring Boot中怎么玩CKFinder。ckeditor中“瀏覽服務器”的后臺操作是自己寫代碼來實現瀏覽,界面操作不太友好。CKFinder的瀏覽界面不錯,而且還能定制不同的樣式。
集成
1.下載
下載Java 版本的CKFinder,支持Java的最新版本是2.6.2.1,3.x的CKFinder沒有提供Java實現。下載后是壓縮文件:【ckfinder_java_2.6.2.1.zip】
2.解壓
1.ZIP解壓
ZIP解壓后的目錄:
_source:源代碼;
CKFinderJava-2.6.2.1.war:war包,可以直接在Tomcat下面運行。
2.War包解壓
解壓War包:
直接把ckfinder文件夾拷貝到static目錄下面,和集成CKEditor一樣。
3.配置
1.資源路徑配置
WebMvcConfig中添加配置,把CKFinder添加到Spring Boot的資源路徑中,定義訪問路徑,便于訪問。
registry.addResourceHandler("/ckfinder/**").addResourceLocations("classpath:/static/ckfinder/");
2.Maven依賴配置
CKFinderJava-2.6.2.1\WEB-INF\lib下是用到的jar,pom中配置主要的jar包。
<!--CKFinder start--><dependency><groupId>com.ckfinder</groupId><artifactId>CKFinder</artifactId><version>2.6.2.1</version></dependency><dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.0.1</version></dependency><!--CKFinder end-->這是CKFinder的簡單集成,下面來說說具體怎么玩。
功能實現
CKFinder集成以后,瀏覽功能還不能使用。
1.配置路徑
在CKEditor的配置文件config.js中配置訪問路徑。參考官網給出的例子
config.filebrowserImageBrowseUrl= '/ckfinder/ckfinder.html?type=Images'
不配置filebrowserImageBrowseUrl,下面的【瀏覽服務器】按鈕是沒有的。
點擊瀏覽服務器:
/ckfinder/core/connector/java/connector.java不可用,找不到。。。
這個路徑是CKFinder內置的,目前沒找到怎么修改這個路徑。不能修改那就實現這個路徑。
2.內置URL實現
查看web.xml文件,看看這個路徑是怎么定義的。
可以看到
/ckfinder/core/connector/java/connector.java
是由Servletcom.ckfinder.connector.ConnectorServlet來處理的。
這就簡單了,寫個Servlet來繼承它。
WebCkApplication中添加掃描Servlet的注解
URL解決了,試試按鈕能不能用。
恩,還是報錯從服務器讀取xml數據出錯,看看log怎么說。
Configuration不能正確初始化,在初始化讀取xml文件的時候報錯。。。
3.加載XML文件
1.config.xml文件
從web.xml中看到,還需要加載config.xml文件。config.xml在\WEB-INF目錄下,復制到classpath下,這里重命名為ckfinder.xml。
啟用CKFinder,enabled修改為True,默認是false,瀏覽功能是不能用的。
配置baseDir,如果沒配置baseDir,點擊瀏覽服務器按鈕的時候會在臨時目錄創建以下目錄:
配置的話,在配置路徑下也是有同樣的目錄結構的。和CKEditor上傳的路徑一致,這樣上傳的文件也可以直接瀏覽到。
2.classpath加載Xml文件
參考springboto集成ckfinder,重寫Configuration,從classpath下加載Xml文件。
DefaultResourceLoader loader = new DefaultResourceLoader();
Resource resource = loader.getResource(this.xmlFilePath);
Servlet中加載配置
@WebServlet(urlPatterns = "/ckfinder/core/connector/java/connector.java", initParams = {@WebInitParam(name = "XMLConfig", value = "classpath:ckfinder.xml"),@WebInitParam(name = "debug", value = "false"),@WebInitParam(name = "configuration", value = "com.wxs.ckeditor.config.CKFinderConfig") }) public class ImageBrowseServlet extends ConnectorServlet { }到這里,Spring Boot集成CKFinder就完美實現了。
優化
使用的話就很簡單了,這里不再說了。寫一下后期的一些優化,是代碼更簡潔,維護更方便。
1.CKEditor、CKFinder使用同一個存儲路徑
ckfinder.xml中配置以下路徑
<baseDir>F:\\data\\file\\image\\</baseDir> <baseURL>http://localhost:8180/public/image/</baseURL>http://localhost:8180/public/image/是在WebMvcConfig中定義的
CKFinder返回的URL中會自帶images
所以CKEditor用的存儲路徑和訪問路徑改為以下:
#磁盤存儲路徑 ckeditor.storage.image.path=F:\\data\\file\\image\\images\\ #訪問路徑 ckeditor.access.image.url=http://localhost:8180/public/image/images/這樣就更好了,CKEditor、CKFinder使用同一個存儲路徑。
后續會在下個博文里對集成CKFinder做一下詳細的優化。
參考
CKEditor與CKFinder學習–整合SpringMVC
ckeditor和ckfinder集成詳細配置及其優化
源碼
轉載于:https://my.oschina.net/wuxinshui/blog/967673
總結
以上是生活随笔為你收集整理的Spring Boot集成CKFinder的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot 传参方式
- 下一篇: 山河远阔是什么意思