配置CKFinder(Java版)

1. 下载

CKFinder官网下载地址提供了PHP,ASP, Java等不同下载版本。

2. 配置

1)config.xml放到WEB-INF下, 

2)其他文件放到Webcontent下, 

3)配置web.xml,

xml
    <!--CKFinder  -->
    <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/ckfinder.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ConnectorServlet</servlet-name>
        <url-pattern><!--根据ckfinder文件所在文件夹决定,我的ckfinder放到webcontent下的view文件夹下-->
            /view/ckfinder/core/connector/java/connector.java
        </url-pattern>
    </servlet-mapping>
    <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文件所在文件夹决定,我的ckfinder放到webcontent下的view文件夹下-->
            /view/ckfinder/core/connector/java/connector.java
         </url-pattern>
    </filter-mapping>
    <!-- Userfiles download -->
    <servlet>
        <servlet-name>UserfilesDownloadServlet</servlet-name><!--文件下载需要对应后台的Servlet-->
        <servlet-class>com.ckfinder.UserfilesDownloadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserfilesDownloadServlet</servlet-name><!--此处由config.xml的baseURl决定路径-->
        <url-pattern>/userfiles/*</url-pattern>
    </servlet-mapping>

4) 配置config.xml

xml

<config>
    <enabled>true</enabled>
    <baseDir></baseDir>
    <baseURL>/userfiles/</baseURL>
    <licenseKey></licenseKey>
    <licenseName></licenseName>
    <imgWidth>1024</imgWidth>
    <imgHeight>768</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>.svn</folder>
        <folder>CVS</folder>
    </hideFolders>
    <hideFiles>
        <file>.*</file>
    </hideFiles>
    <defaultResourceTypes></defaultResourceTypes>
    <types>
        <type name="Files"><!--java-util是我的项目工程名-->
            <url>/java-util%BASE_URL%files/</url>
            <directory>%BASE_DIR%files</directory>
            <maxSize>5M</maxSize>
            <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>
            <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>
            <allowedExtensions>swf,flv</allowedExtensions>
            <deniedExtensions></deniedExtensions>
        </type>
    </types>
    <accessControls>
        <accessControl>
            <role>*</role>
            <resourceType>*</resourceType>
            <folder>/</folder>
            <folderView>true</folderView>
            <folderCreate>true</folderCreate>
            <folderRename>true</folderRename>
            <folderDelete>true</folderDelete>
            <fileView>true</fileView>
            <fileUpload>true</fileUpload>
            <fileRename>true</fileRename>
            <fileDelete>true</fileDelete>
        </accessControl>
    </accessControls>
    <thumbs>
        <enabled>true</enabled>
        <url>%BASE_URL%_thumbs/</url>
        <directory>%BASE_DIR%_thumbs</directory>
        <directAccess>false</directAccess>
        <maxHeight>100</maxHeight>
        <maxWidth>200</maxWidth>
        <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>

5)后台下载文件需要的Servlet

java

package com.ckfinder;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.util.UriUtils;

import com.ckfinder.connector.ServletContextFactory;

/**
 * 查看CK上传的图片
 * @author ThinkGem
 * @version 2014-06-25
 */
public class UserfilesDownloadServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private Logger logger = LoggerFactory.getLogger(getClass());
    private String USERFILES_BASE_URL = "/userfiles/";
    public void fileOutputStream(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        String filepath = req.getRequestURI();
        int index = filepath.indexOf(USERFILES_BASE_URL);

        if(index >= 0) {
            filepath = filepath.substring(index + USERFILES_BASE_URL.length());
        }
        try {
            filepath = UriUtils.decode(filepath, "UTF-8");
        } catch (UnsupportedEncodingException e1) {
            logger.error(String.format("解释文件路径失败,URL地址为%s", filepath), e1);
        }
        File file = new File(getUserfilesBaseDir() + USERFILES_BASE_URL + filepath);
        try {
            FileCopyUtils.copy(new FileInputStream(file), resp.getOutputStream());
            resp.setHeader("Content-Type", "application/octet-stream");
            return;
        } catch (FileNotFoundException e) {
            req.setAttribute("exception", new FileNotFoundException("请求的文件不存在"));
            req.getRequestDispatcher("/WEB-INF/views/error/404.jsp").forward(req, resp);
        }
    }

    private String getUserfilesBaseDir() {
        String path = "";
        try {
            path = ServletContextFactory.getServletContext().getRealPath("/");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return path;
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        fileOutputStream(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        fileOutputStream(req, resp);
    }
}

6) jar包引入 
方法一:pom.xml

xml
<!-- CKFinder begin -->
        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.ckfinder</groupId>
            <artifactId>apache-ant-zip</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>com.ckfinder</groupId>
            <artifactId>ckfinder</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>com.ckfinder</groupId>
            <artifactId>ckfinderplugin-fileeditor</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>com.ckfinder</groupId>
            <artifactId>ckfinderplugin-imageresize</artifactId>
            <version>2.3</version>
        </dependency>
        <!-- CKFinder end -->

方法二: 
URL链接,jar包下载

运行

运行ckfinder文件夹下–>_samples–>standalone.html文件,出现下面界面。 

OK!

附录

原文地址:https://www.cnblogs.com/anpajin/p/6377632.html