ckfinder的使用及了解config.xml的配置
生活随笔
收集整理的這篇文章主要介紹了
ckfinder的使用及了解config.xml的配置
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ckfinder的使用,根據(jù)官網(wǎng)向?qū)?#xff08;CKFinder_2.x/Developers_Guide)自己寫的筆記
1、將ckfinder_java_2.4.3\CKFinder-Java-2.4.3\ckfinder目錄放到根目錄下面,WEB-INF/lib中的jar文件全部放到項目中的lib下面
2、將config.xml放到WEB-INF目錄下面
3、修改config.xml文件下的配置?
??? <enabled>true</enabled> ?? ?<!--修改為true,表示開啟ckfinder功能。默認是false--!> ??? ?
4、? 支持以下服務
??? Tomcat 5.5-7,Jetty 7-9,JBoss 6-7,GlassFish 3.0-4.0,Weblogic 11g-12c.?
----------------- 了解config.xml配置 ----------------------
??? <licenseName>put your license key here</licenseName>
??? <baseURL>http://example.com/CKFinderJava/userfiles/</baseURL>
??? <baseDir>C:\tomcat-6.0.32\webapps\CKFinderJava\userfiles\</baseDir>
? 1)在config.xml文件中添加以下語句:
?? <accessControls>
?? ?<accessControl>
?? ??? ?<role>*</role>?? //設置用戶類型
?? ??? ?<resourceType>*</resourceType>? //不同資源如images,flash,files
?? ??? ?<folder>/</folder>?? //默認“/”是沒有文件夾設置
?? ??? ?<folderView>true</folderView>?? //以下設置true代表有效,false代表無效
?? ??? ?<folderCreate>true</folderCreate>
?? ??? ?<folderRename>true</folderRename>
?? ??? ?<folderDelete>true</folderDelete>
?? ??? ?<fileView>true</fileView>
?? ??? ?<fileUpload>true</fileUpload>
?? ??? ?<fileRename>true</fileRename>
?? ??? ?<fileDelete>true</fileDelete>
?? ?</accessControl>
?? </accessControls>
? 2)在config.xml文件中配置用戶角色session變量
?? <userRoleSessionVar>CKFinder_UserRole</userRoleSessionVar>
? 3)在java代碼中合適的位置,比如login()方法里,添加以下代碼。
???? 設置一個用戶角色名,如“admin”
?? HttpSession session = request.getSession(true);
?? session.setAttribute("CKFinder_UserRole", "admin");
? 4)注意:系統(tǒng)會在訪問yoursite/ckfinder2.3.1/ckfinder.html時(包括點擊下圖的“瀏覽服務器”按鈕),
??? 檢查CKFinder_UserRole的值是什么,它具有的權(quán)限是什么。如果一個人沒有登錄系統(tǒng),而是直接訪問
??? yoursite/ckfinder2.3.1/ckfinder.html,那么系統(tǒng)就會檢查到CKFinder_UserRole是null,
??? 他就看不到服務器上的文件。
7、ckfinder允許創(chuàng)建縮略圖,使用設置的大小瀏覽圖片
? 1)設置縮略圖參數(shù)
??? <thumbs>
?? ?<enabled>true</enabled>
?? ?<url>%BASE_URL%_thumbs/</url>
?? ?<directory>%BASE_DIR%_thumbs</directory>
?? ?<directAccess>false</directAccess> //設置為true,直接從_thumbs文件夾中加載縮略圖,其他目錄下時不能使用
?? ?<maxHeight>100</maxHeight>
?? ?<maxWidth>100</maxWidth>
?? ?<quality>80</quality>??? //設置范圍[0-100],可接受值是45左右,一般設置為80
??? </thumbs>
? 2)你也可以指定圖片的上傳大小,如果圖片比設置范圍大時,將會按指定的大小加載。
??? <imgWidth>1600</imgWidth>
??? <imgHeight>1200</imgHeight>
??? <imgQuality>80</imgQuality> //范圍是0-100
8、資源類型是不同路徑下,組織文件的方法,每一種路徑有著不同的配置,下面是兩種資源類型:
? 1) 內(nèi)置的類型有三種files, images, and Flash objects.?
???? 在config.xml文件中已經(jīng)進行了配置<type>...</type>,自己查看一下。
???? <types>
?? ?<type name="Flash">
?? ??? ?<url>%BASE_URL%flash/</url>?? //url和directory的定義規(guī)則與baseURL和baseDir相同
?? ??? ?<directory>%BASE_DIR%flash</directory>
?? ??? ?<maxSize>0</maxSize>????????? //定義上傳圖片的字節(jié)大小,可以使用G,M,K單位
?? ??? ?<allowedExtensions>swf,flv</allowedExtensions>? //允許上傳的格式
?? ??? ?<deniedExtensions></deniedExtensions>?? //不允許長傳的格式
?? ?</type>
?? ?<type name="Files">...</type>
?? ?<type name="Images">...</type>
????? </types>
? 2)如果添加新的資源類型,也可以再config.xml中進行配置,例如:
???? <types>
?? ?<type name="MSdocs">
?? ??? ?<url>%BASE_URL%MSdocs/</url>
?? ??? ?<directory>%BASE_DIR%MSdocs</directory>
?? ??? ?<maxSize>2M</maxSize>
?? ??? ?<allowedExtensions>doc,ppt,xls</allowedExtensions>
?? ??? ?<deniedExtensions></deniedExtensions>
?? ?</type>
???? </types>
9、安全問題
?? 1)多個后綴文件讀取時,不只是檢查最后一個后綴名,如果設置.php文件不允許上傳,而.rar文件允許上傳,
?? ?則foo.php.rar文件將不會被上傳,將會被重命名為foo_php.rar
???? <checkDoubleExtension>true</checkDoubleExtension>
?? 2)檢查是不是圖片文件,不僅僅是后綴名正確,后綴名為jpeg的文本文件不能成功上傳到圖片。
???? <secureImageUploads>true</secureImageUploads>?
?? 3)允許上傳的文件中包含html代碼的文件類型
??? <uriEncoding>ISO-8859-1</uriEncoding>?? ?
??? //對用戶隱藏文件夾,可以使用*和?,分別代表多個和一個類型
??? <hideFolders>
?? ?<folder>.svn</folder>
?? ?<folder>CVS</folder>
??? </hideFolders>
??? //對用戶隱藏文件
??? <hideFiles>
?? ?<file>.*</file>
??? </hideFiles>
--------------------------
11、用Java類實現(xiàn)對配置文件config.xml的修改
?? 1)在web.xml中添加ConnectorServlet,在servlet下添加配置參數(shù)
???? <init-param>
?? ?<param-name>configuration</param-name>
?? ?<param-value>包名.MyConfiguration類名</param-value>
???? </init-param>
?? 2)編寫MyConfiguration類,可以添加這些方法:init, checkAuthentication,
?? ?prepareConfigurationForRequest,and specific getter methods.?
????? public class MyConfiguration extends Configuration {
??????? public MyConfiguration(ServletConfig servletConfig) {
?? ??? ?super(servletConfig);
??????? #1、
??????? @Override
?? ?protected Configuration createConfigurationInstance() {
?? ??? ?return new MyConfiguration(this.servletConf);
?? ?}
????? }
???? #2、該示例是修改config.xml中的資源類型
?????? @Override
?? ?public void init() throws Exception {
?? ?? super.init();
?? ?? this.baseURL = "/CKFinderJava/userfiles/";
?? ?? ResourceType resourceType = this.types.get("Files");
?? ?? resourceType.setAllowedExtensions(
?? ??? ?resourceType.getAllowedExtensions().concat(",zip,7z"));? ?
??????? }
???? #3、該方法允許添加自己的檢查,例子:通過測試"loggedIn"session檢查用戶是否被寫進日志
??????? @Override
? ?? ?public boolean checkAuthentication(final HttpServletRequest request) {
?? ?? return request.getSession().getAttribute("loggedIn") != null;
?? ?}
???? #4、例子:修改xml文件中<licenseName>標簽能被重寫
?? ?@Override
?? ?public String getLicenseName() {
?? ?? return "MyLicenseName";
?? ?}
12、web.xml中配置ConectorServlet,然后在servlet配置下添加配置Java類<init-param>configuration
? 1)<servlet>
?? ?<servlet-name>ConnectorServlet</servlet-name>
?? ?<servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>
?? ?<init-param>
?? ??? ?<param-name>XMLConfig</param-name>
?? ??? ?<param-value>/WEB-INF/config.xml</param-value>
?? ?</init-param>
?? ?<load-on-startup>1</load-on-startup>
??? </servlet>
??? <servlet-mapping>
?? ?<servlet-name>ConnectorServlet</servlet-name>
?? ?//虛擬的映射路徑
?? ?<url-pattern>
?? ??? ?/ckfinder/core/connector/java/connector.java
?? ?</url-pattern>
??? </servlet-mapping>
? 2)配置過濾器
??? <filter>
?? ?<filter-name>FileUploadFilter</filter-name>
?? ?<filter-class>com.ckfinder.connector.FileUploadFilter</filter-class>
??????? <init-param>
????????????? <param-name>sessionCookieName</param-name>
????????????? <param-value>JSESSIONID</param-value>
??????? </init-param>
??????? <init-param>
????????????? <param-name>sessionParameterName</param-name>
????????????? <param-value>jsessionid</param-value>
??????? </init-param>
??? </filter>
??? <filter-mapping>
?? ?<filter-name>FileUploadFilter</filter-name>
?? ?<url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern>
1、將ckfinder_java_2.4.3\CKFinder-Java-2.4.3\ckfinder目錄放到根目錄下面,WEB-INF/lib中的jar文件全部放到項目中的lib下面
2、將config.xml放到WEB-INF目錄下面
3、修改config.xml文件下的配置?
??? <enabled>true</enabled> ?? ?<!--修改為true,表示開啟ckfinder功能。默認是false--!> ??? ?
4、? 支持以下服務
??? Tomcat 5.5-7,Jetty 7-9,JBoss 6-7,GlassFish 3.0-4.0,Weblogic 11g-12c.?
----------------- 了解config.xml配置 ----------------------
5、1)如果是購買ckfinder,需要更改config.xml
??? <licenseKey>put your license name here</licenseKey>??? <licenseName>put your license key here</licenseName>
? 2)配置ckfinder處理的資源路徑,上傳文件存放的路徑。例如:
??? <baseURL>/CKFinderJava/userfiles/</baseURL>??? <baseURL>http://example.com/CKFinderJava/userfiles/</baseURL>
? 3)服務直接路徑,圖片上傳后的位置,是物理地址的全路徑而不是相對路徑,最后加“/”
??? <baseDir>/usr/tomcat-6.0.32/webapps/CKFinderJava/userfiles/</baseDir>??? <baseDir>C:\tomcat-6.0.32\webapps\CKFinderJava\userfiles\</baseDir>
?? 注意:如果baseDir設置不寫,參考baseURL的路徑。但是baseURL是網(wǎng)頁地址時,不會覆蓋
6、Access Control 訪問權(quán)限,使ckfinder更安全? 1)在config.xml文件中添加以下語句:
?? <accessControls>
?? ?<accessControl>
?? ??? ?<role>*</role>?? //設置用戶類型
?? ??? ?<resourceType>*</resourceType>? //不同資源如images,flash,files
?? ??? ?<folder>/</folder>?? //默認“/”是沒有文件夾設置
?? ??? ?<folderView>true</folderView>?? //以下設置true代表有效,false代表無效
?? ??? ?<folderCreate>true</folderCreate>
?? ??? ?<folderRename>true</folderRename>
?? ??? ?<folderDelete>true</folderDelete>
?? ??? ?<fileView>true</fileView>
?? ??? ?<fileUpload>true</fileUpload>
?? ??? ?<fileRename>true</fileRename>
?? ??? ?<fileDelete>true</fileDelete>
?? ?</accessControl>
?? </accessControls>
? 2)在config.xml文件中配置用戶角色session變量
?? <userRoleSessionVar>CKFinder_UserRole</userRoleSessionVar>
? 3)在java代碼中合適的位置,比如login()方法里,添加以下代碼。
???? 設置一個用戶角色名,如“admin”
?? HttpSession session = request.getSession(true);
?? session.setAttribute("CKFinder_UserRole", "admin");
? 4)注意:系統(tǒng)會在訪問yoursite/ckfinder2.3.1/ckfinder.html時(包括點擊下圖的“瀏覽服務器”按鈕),
??? 檢查CKFinder_UserRole的值是什么,它具有的權(quán)限是什么。如果一個人沒有登錄系統(tǒng),而是直接訪問
??? yoursite/ckfinder2.3.1/ckfinder.html,那么系統(tǒng)就會檢查到CKFinder_UserRole是null,
??? 他就看不到服務器上的文件。
7、ckfinder允許創(chuàng)建縮略圖,使用設置的大小瀏覽圖片
? 1)設置縮略圖參數(shù)
??? <thumbs>
?? ?<enabled>true</enabled>
?? ?<url>%BASE_URL%_thumbs/</url>
?? ?<directory>%BASE_DIR%_thumbs</directory>
?? ?<directAccess>false</directAccess> //設置為true,直接從_thumbs文件夾中加載縮略圖,其他目錄下時不能使用
?? ?<maxHeight>100</maxHeight>
?? ?<maxWidth>100</maxWidth>
?? ?<quality>80</quality>??? //設置范圍[0-100],可接受值是45左右,一般設置為80
??? </thumbs>
? 2)你也可以指定圖片的上傳大小,如果圖片比設置范圍大時,將會按指定的大小加載。
??? <imgWidth>1600</imgWidth>
??? <imgHeight>1200</imgHeight>
??? <imgQuality>80</imgQuality> //范圍是0-100
8、資源類型是不同路徑下,組織文件的方法,每一種路徑有著不同的配置,下面是兩種資源類型:
? 1) 內(nèi)置的類型有三種files, images, and Flash objects.?
???? 在config.xml文件中已經(jīng)進行了配置<type>...</type>,自己查看一下。
???? <types>
?? ?<type name="Flash">
?? ??? ?<url>%BASE_URL%flash/</url>?? //url和directory的定義規(guī)則與baseURL和baseDir相同
?? ??? ?<directory>%BASE_DIR%flash</directory>
?? ??? ?<maxSize>0</maxSize>????????? //定義上傳圖片的字節(jié)大小,可以使用G,M,K單位
?? ??? ?<allowedExtensions>swf,flv</allowedExtensions>? //允許上傳的格式
?? ??? ?<deniedExtensions></deniedExtensions>?? //不允許長傳的格式
?? ?</type>
?? ?<type name="Files">...</type>
?? ?<type name="Images">...</type>
????? </types>
? 2)如果添加新的資源類型,也可以再config.xml中進行配置,例如:
???? <types>
?? ?<type name="MSdocs">
?? ??? ?<url>%BASE_URL%MSdocs/</url>
?? ??? ?<directory>%BASE_DIR%MSdocs</directory>
?? ??? ?<maxSize>2M</maxSize>
?? ??? ?<allowedExtensions>doc,ppt,xls</allowedExtensions>
?? ??? ?<deniedExtensions></deniedExtensions>
?? ?</type>
???? </types>
9、安全問題
?? 1)多個后綴文件讀取時,不只是檢查最后一個后綴名,如果設置.php文件不允許上傳,而.rar文件允許上傳,
?? ?則foo.php.rar文件將不會被上傳,將會被重命名為foo_php.rar
???? <checkDoubleExtension>true</checkDoubleExtension>
?? 2)檢查是不是圖片文件,不僅僅是后綴名正確,后綴名為jpeg的文本文件不能成功上傳到圖片。
???? <secureImageUploads>true</secureImageUploads>?
?? 3)允許上傳的文件中包含html代碼的文件類型
???? <htmlExtensions>html, htm, xml, js, xsl</htmlExtensions>
? 4)如果設置為true,在創(chuàng)建文件夾或者上傳文件時,名字里不能包含不安全的字符????? <disallowUnsafeCharacters>false</disallowUnsafeCharacters> ?? ??
??? <uriEncoding>ISO-8859-1</uriEncoding>?? ?
??? //對用戶隱藏文件夾,可以使用*和?,分別代表多個和一個類型
??? <hideFolders>
?? ?<folder>.svn</folder>
?? ?<folder>CVS</folder>
??? </hideFolders>
??? //對用戶隱藏文件
??? <hideFiles>
?? ?<file>.*</file>
??? </hideFiles>
--------------------------
11、用Java類實現(xiàn)對配置文件config.xml的修改
?? 1)在web.xml中添加ConnectorServlet,在servlet下添加配置參數(shù)
???? <init-param>
?? ?<param-name>configuration</param-name>
?? ?<param-value>包名.MyConfiguration類名</param-value>
???? </init-param>
?? 2)編寫MyConfiguration類,可以添加這些方法:init, checkAuthentication,
?? ?prepareConfigurationForRequest,and specific getter methods.?
????? public class MyConfiguration extends Configuration {
??????? public MyConfiguration(ServletConfig servletConfig) {
?? ??? ?super(servletConfig);
??????? #1、
??????? @Override
?? ?protected Configuration createConfigurationInstance() {
?? ??? ?return new MyConfiguration(this.servletConf);
?? ?}
????? }
???? #2、該示例是修改config.xml中的資源類型
?????? @Override
?? ?public void init() throws Exception {
?? ?? super.init();
?? ?? this.baseURL = "/CKFinderJava/userfiles/";
?? ?? ResourceType resourceType = this.types.get("Files");
?? ?? resourceType.setAllowedExtensions(
?? ??? ?resourceType.getAllowedExtensions().concat(",zip,7z"));? ?
??????? }
???? #3、該方法允許添加自己的檢查,例子:通過測試"loggedIn"session檢查用戶是否被寫進日志
??????? @Override
? ?? ?public boolean checkAuthentication(final HttpServletRequest request) {
?? ?? return request.getSession().getAttribute("loggedIn") != null;
?? ?}
???? #4、例子:修改xml文件中<licenseName>標簽能被重寫
?? ?@Override
?? ?public String getLicenseName() {
?? ?? return "MyLicenseName";
?? ?}
12、web.xml中配置ConectorServlet,然后在servlet配置下添加配置Java類<init-param>configuration
? 1)<servlet>
?? ?<servlet-name>ConnectorServlet</servlet-name>
?? ?<servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>
?? ?<init-param>
?? ??? ?<param-name>XMLConfig</param-name>
?? ??? ?<param-value>/WEB-INF/config.xml</param-value>
?? ?</init-param>
?? ?<load-on-startup>1</load-on-startup>
??? </servlet>
??? <servlet-mapping>
?? ?<servlet-name>ConnectorServlet</servlet-name>
?? ?//虛擬的映射路徑
?? ?<url-pattern>
?? ??? ?/ckfinder/core/connector/java/connector.java
?? ?</url-pattern>
??? </servlet-mapping>
? 2)配置過濾器
??? <filter>
?? ?<filter-name>FileUploadFilter</filter-name>
?? ?<filter-class>com.ckfinder.connector.FileUploadFilter</filter-class>
??????? <init-param>
????????????? <param-name>sessionCookieName</param-name>
????????????? <param-value>JSESSIONID</param-value>
??????? </init-param>
??????? <init-param>
????????????? <param-name>sessionParameterName</param-name>
????????????? <param-value>jsessionid</param-value>
??????? </init-param>
??? </filter>
??? <filter-mapping>
?? ?<filter-name>FileUploadFilter</filter-name>
?? ?<url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern>
??? </filter-mapping>
13、頁面使用ckfinder標簽
??? <%@ taglib uri="http://cksource.com/ckfinder" prefix="ckfinder" %>
??? <ckfinder:ckfinder basePath="/CKFinderJava/ckfinder/" />
總結(jié)
以上是生活随笔為你收集整理的ckfinder的使用及了解config.xml的配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓系统的电视机_小伙买的键盘主机大家都
- 下一篇: ue4多人联网的实例