`
lzstone
  • 浏览: 92979 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

fckeditor2.4.1配置

阅读更多

      fckeditor2.4.1 相信对于作web的朋友不会很陌生,就是可编辑工具。

      1、 fckeditor2.4.1的配置也不难,按照官方的文档一步一步的配置就可以了,理论上是这样的,但是fckeditor2.4.1的Servlet直接用就会出现一些类无法识别的问题,最后看了一下源码进行了一下修改,用来一年多还很稳定

       public class ConnectorServlet extends HttpServlet {

    private static final long serialVersionUID = -5742008970929377161L;

    private static final Logger logger = LoggerFactory
            .getLogger(ConnectorServlet.class);

    /**
     * Initialize the servlet: <code>mkdir</code> &lt;DefaultUserFilesPath&gt;
     */
    public void init() throws ServletException, IllegalArgumentException {
        String realDefaultUserFilesPath = getServletContext().getRealPath(
                ConnectorHandler.getDefaultUserFilesPath());

        File defaultUserFilesDir = new File(realDefaultUserFilesPath);
        UtilsFile.checkDirAndCreate(defaultUserFilesDir);

        logger.info("ConnectorServlet successfully initialized!");
    }

    /**
     * Manage the <code>GET</code> requests (<code>GetFolders</code>,
     * <code>GetFoldersAndFiles</code>, <code>CreateFolder</code>).<br/>
     *
     * The servlet accepts commands sent in the following format:<br/>
     * <code>connector?Command=&lt;CommandName&gt;&Type=&lt;ResourceType&gt;&CurrentFolder=&lt;FolderPath&gt;</code>
     * <p>
     * It executes the commands and then returns the result to the client in XML
     * format.
     * </p>
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        logger.debug("Entering ConnectorServlet#doGet");

        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/xml; charset=UTF-8");
        response.setHeader("Cache-Control", "no-cache");
        PrintWriter out = response.getWriter();

        String commandStr = request.getParameter("Command");
        String typeStr = request.getParameter("Type");
        String currentFolderStr = request.getParameter("CurrentFolder");

        logger.debug("Parameter Command: {}", commandStr);
        logger.debug("Parameter Type: {}", typeStr);
        logger.debug("Parameter CurrentFolder: {}", currentFolderStr);

        XmlResponse xr;

        if (!RequestCycleHandler.isEnabledForFileBrowsing(request))
            xr = new XmlResponse(XmlResponse.EN_ERROR,
                    Messages.NOT_AUTHORIZED_FOR_BROWSING);
        else if (!CommandHandler.isValidForGet(commandStr))
            xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INVALID_COMMAND);
        else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr))
            xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INVALID_TYPE);
        else if (!UtilsFile.isValidPath(currentFolderStr))
            xr = new XmlResponse(XmlResponse.EN_ERROR,
                    Messages.INVALID_CURRENT_FOLDER);
        else {
            CommandHandler command = CommandHandler.getCommand(commandStr);
            ResourceTypeHandler resourceType = ResourceTypeHandler
                    .getDefaultResourceType(typeStr);

            String typePath = UtilsFile.constructServerSidePath(request,
                    resourceType);
            String typeDirPath = getServletContext().getRealPath(typePath);

            File typeDir = new File(typeDirPath);
            UtilsFile.checkDirAndCreate(typeDir);

            File currentDir = new File(typeDir, currentFolderStr);

            if (!currentDir.exists())
                xr = new XmlResponse(XmlResponse.EN_INVALID_FOLDER_NAME);
            else {

                xr = new XmlResponse(command, resourceType, currentFolderStr,
                        UtilsResponse.constructResponseUrl(request,
                                resourceType, currentFolderStr, true,
                                ConnectorHandler.isFullUrl()));

                if (command.equals(CommandHandler.GET_FOLDERS))
                    xr.setFolders(currentDir);
                else if (command.equals(CommandHandler.GET_FOLDERS_AND_FILES))
                    xr.setFoldersAndFiles(currentDir);
                else if (command.equals(CommandHandler.CREATE_FOLDER)) {
                    String fileName = request.getParameter("NewFolderName");
                    fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8");
                    String newFolderStr = UtilsFile.sanitizeFolderName(fileName);
                    logger.debug("Parameter NewFolderName: {}", newFolderStr);

                    File newFolder = new File(currentDir, newFolderStr);
                    int errorNumber = XmlResponse.EN_UKNOWN;

                    if (newFolder.exists())
                        errorNumber = XmlResponse.EN_ALREADY_EXISTS;
                    else {
                        try {
                            errorNumber = (newFolder.mkdir()) ? XmlResponse.EN_OK
                                    : XmlResponse.EN_INVALID_FOLDER_NAME;
                        } catch (SecurityException e) {
                            errorNumber = XmlResponse.EN_SECURITY_ERROR;
                        }
                    }
                    xr.setError(errorNumber);
                }
            }
        }

        out.print(xr);
        out.flush();
        out.close();
        logger.debug("Exiting ConnectorServlet#doGet");
    }

    /**
     * Manage the <code>POST</code> requests (<code>FileUpload</code>).<br />
     *
     * The servlet accepts commands sent in the following format:<br />
     * <code>connector?Command=&lt;FileUpload&gt;&Type=&lt;ResourceType&gt;&CurrentFolder=&lt;FolderPath&gt;</code>
     * with the file in the <code>POST</code> body.<br />
     * <br>
     * It stores an uploaded file (renames a file if another exists with the
     * same name) and then returns the JavaScript callback.
     */
    @SuppressWarnings("unchecked")
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        logger.debug("Entering Connector#doPost");

        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        response.setHeader("Cache-Control", "no-cache");
        PrintWriter out = response.getWriter();

        String commandStr = request.getParameter("Command");
        String typeStr = request.getParameter("Type");
        String currentFolderStr = request.getParameter("CurrentFolder");

        logger.debug("Parameter Command: {}", commandStr);
        logger.debug("Parameter Type: {}", typeStr);
        logger.debug("Parameter CurrentFolder: {}", currentFolderStr);

        UploadResponse ur;

        Object[] obj = new Object[4];
        // if this is a QuickUpload request, 'commandStr' and 'currentFolderStr'
        // are empty
        if (Utils.isEmpty(commandStr) && Utils.isEmpty(currentFolderStr)) {
            commandStr = "QuickUpload";
            currentFolderStr = "/";
        }

        if (!RequestCycleHandler.isEnabledForFileUpload(request)) {
            obj[0] = UploadResponse.SC_SECURITY_ERROR;
            obj[1] = null;
            obj[2] = null;
            obj[3] = Messages.NOT_AUTHORIZED_FOR_UPLOAD;
            ur = new UploadResponse(obj);
        } else if (!CommandHandler.isValidForPost(commandStr)) {
            obj[0] = UploadResponse.SC_ERROR;
            obj[1] = null;
            obj[2] = null;
            obj[3] = Messages.INVALID_COMMAND;
            ur = new UploadResponse(obj);
        } else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr)) {
            obj[0] = UploadResponse.SC_ERROR;
            obj[1] = null;
            obj[2] = null;
            obj[3] = Messages.INVALID_TYPE;
            ur = new UploadResponse(obj);
        } else if (!UtilsFile.isValidPath(currentFolderStr))
            ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
        else {
            ResourceTypeHandler resourceType = ResourceTypeHandler
                    .getDefaultResourceType(typeStr);

            String typePath = UtilsFile.constructServerSidePath(request,
                    resourceType);
            String typeDirPath = getServletContext().getRealPath(typePath);

            File typeDir = new File(typeDirPath);
            UtilsFile.checkDirAndCreate(typeDir);

            File currentDir = new File(typeDir, currentFolderStr);

            if (!currentDir.exists())
                ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
            else {

                String newFilename = null;
                FileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);
                upload.setHeaderEncoding("UTF-8");
                try {

                    List<FileItem> items = upload.parseRequest(request);

                    // We upload only one file at the same time
                    FileItem uplFile = items.get(0);
                    String rawName = UtilsFile.sanitizeFileName(uplFile
                            .getName());
                    String filename = FilenameUtils.getName(rawName);
                    String baseName = FilenameUtils.removeExtension(filename);
                    String extension = FilenameUtils.getExtension(filename);
                   
                    filename = UUID.randomUUID().toString()+"."+extension;
                   
                    if (!ExtensionsHandler.isAllowed(resourceType, extension)) {
                        obj[0] = UploadResponse.SC_INVALID_EXTENSION;
                        obj[1] = null;
                        obj[2] = null;
                        obj[3] = null;
                        ur = new UploadResponse(obj);
                    }
                    else if(uplFile.getSize()>10*1024*1024){
                        obj[0] = 333;
                        obj[1] = null;
                        obj[2] = null;
                        obj[3] = null;
                        ur = new UploadResponse(obj);
                    }
                    else {

                        // construct an unique file name
                        File pathToSave = new File(currentDir, filename);
                        int counter = 1;
                        while (pathToSave.exists()) {
                            newFilename = baseName.concat("(").concat(
                                    String.valueOf(counter)).concat(")")
                                    .concat(".").concat(extension);
                            pathToSave = new File(currentDir, newFilename);
                            counter++;
                        }

                        if (Utils.isEmpty(newFilename)) {
                            obj[0] = UploadResponse.SC_OK;
                            obj[1] = UtilsResponse.constructResponseUrl(
                                    request, resourceType, currentFolderStr,
                                    true, ConnectorHandler.isFullUrl()).concat(
                                    filename);
                            obj[2] = null;
                            obj[3] = null;
                            ur = new UploadResponse(obj);
                        } else {
                            obj[0] = UploadResponse.SC_RENAMED;
                            obj[1] = UtilsResponse.constructResponseUrl(
                                    request, resourceType, currentFolderStr,
                                    true, ConnectorHandler.isFullUrl()).concat(
                                    newFilename);
                            obj[2] = newFilename;
                            obj[3] = null;
                            ur = new UploadResponse(obj);
                        }
                        // secure image check
                        if (resourceType.equals(ResourceTypeHandler.IMAGE)
                                && ConnectorHandler.isSecureImageUploads()) {
                            if (UtilsFile.isImage(uplFile.getInputStream()))
                                uplFile.write(pathToSave);
                            else {
                                uplFile.delete();
                                obj[0] = UploadResponse.SC_INVALID_EXTENSION;
                                obj[1] = null;
                                obj[2] = null;
                                obj[3] = null;
                                ur = new UploadResponse(obj);
                            }
                        } else
                            uplFile.write(pathToSave);

                    }
                } catch (Exception e) {
                    obj[0] = UploadResponse.SC_SECURITY_ERROR;
                    obj[1] = null;
                    obj[2] = null;
                    obj[3] = null;
                    ur = new UploadResponse(obj);
                }
            }

        }

        out.print(ur);
        out.flush();
        out.close();

        logger.debug("Exiting Connector#doPost");
    }

}

2、 fckeditor.properties 放到classpath下面 内容:connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl

3、web.xml的配置:<servlet>
    <servlet-name>Connector</servlet-name>
    <servlet-class>com.lustersoft.ssp.fckeditor.ConnectorServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

<servlet-mapping>
    <servlet-name>Connector</servlet-name>
    <url-pattern>/fckeditor/editor/filemanager/connectors/*</url-pattern>
  </servlet-mapping>

主要的配置文件我上传,希望对有需求的朋友带来帮助

分享到:
评论

相关推荐

    fckeditor2.6.4+fckeditor-java-2.4.1配置及中文乱码解决

    包括fckeditor2.6.4+fckeditor-java-2.4.1配置所需资源包及fckeditor-java-2.4.1源码和配置说明文档。 配置中解决了中文乱码,并为上传文件自动创建日期文件夹。

    FCKeditor2.4.1版本(JAVA版)配置

    NULL 博文链接:https://sxlkk.iteye.com/blog/360668

    JAVA技巧FCKEditor2.6.3配合Java的使用步骤

    也许你现在看到的已经是更新的版本了,那么可能某些配置办法已经变化了,本文也将跟进以保持最新动态,相反如果你使用的旧版本的控件,其配置和使用方法也有所区别),下载地址:http://www.fckeditor.net/download...

    fckeditor for JAVA所需要的所有文件

    fckeditor-java-2.4.1-bin.zip //jsp整合包 fckeditor-java-demo-2.4.1.war //完整的项目实例,建议部署到服务器上面看一下这个然后修改一下就可以了。很简单,省的花很多时间在配置上。 另外这个没有针对中文做...

    FCKeditor编辑器在JAVA中的使用与配置

    版本是fckeditor_2.6.4.zip【组件的主文件包】,fckeditor-java-2.4.1-bin.zip【这里面提供了标签库和图片上传的jar】。这些都可以在http://www.fckeditor.net 网站下载到!本人用的是fckeditor_2.6.4.zip和...

    fckeditor所需的jar包

    commons-fileupload-1.2.1.jar,commons-io- 1.3.2.jar,fckeditor-java-core-2.4.1.jar,slf4j-api-1.5.6.jar,slf4j- simple-1.5.6.jar

    fckeditor java Web开发完全组合包,及配置过程.rar

    fckeidtor在java web开发中所用到的全部包及配置全过程,笔者亲自实践啊!

    ASP.NET3.5典型模块开发源代码

    2.4.1 配置页面的缓存属性 18 2.4.2 完善模块中两个功能的导航 19 2.5 小结 20 第3章 个性化设置模块 21 3.1 简单类型的个性化设置功能 21 3.1.1 设置个性化的项目 21 3.1.2 配置个性化信息 22 3.1.3...

    低清版 大型门户网站是这样炼成的.pdf

    2.3.3 struts 2中集成fckeditor 80 2.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的中文本地化 85 2.4.2 struts 2应用的国际化 87 2.4.3 struts 2国际化语言的动态切换 89 2.5 ...

    ASP.NET 3.5 开发大全11-15

    2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if语句的使用方法 2.5.2 switch选择语句的使用 2.6 使用循环语句 2.6.1 for循环语句 2.6.2 while循环语句 2.6.3 do while循环语句 2.6.4 foreach...

    ASP.NET 3.5 开发大全

    2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if语句的使用方法 2.5.2 switch选择语句的使用 2.6 使用循环语句 2.6.1 for循环语句 2.6.2 while循环语句 2.6.3 do while循环语句 2.6.4 foreach...

    ASP.NET 3.5 开发大全1-5

    2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if语句的使用方法 2.5.2 switch选择语句的使用 2.6 使用循环语句 2.6.1 for循环语句 2.6.2 while循环语句 2.6.3 do while循环语句 2.6.4 foreach...

    ASP.NET 3.5 开发大全word课件

    2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if语句的使用方法 2.5.2 switch选择语句的使用 2.6 使用循环语句 2.6.1 for循环语句 2.6.2 while循环语句 2.6.3 do while循环语句 2.6.4 foreach...

    ASPNET35开发大全第一章

    2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if语句的使用方法 2.5.2 switch选择语句的使用 2.6 使用循环语句 2.6.1 for循环语句 2.6.2 while循环语句 2.6.3 do while循环语句 2.6.4 foreach...

    ASP.NET3.5从入门到精通

    2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if 语句的使用方法 2.5.2 switch 选择语句的使用 2.6 使用循环语句 2.6.1 for 循环语句 2.6.2 while 循环语句 2.6.3 do while 循环语句 2.6.4 ...

    Ext 开发指南 学习资料

    2.4.1. 自主决定每列的宽度 2.4.2. 让grid支持按列排序 2.4.3. 中文排序是个大问题 2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 2.6. 更进一步,自动行号和多选checkbox 2.6.1. 自动行号 2.6.2. ...

Global site tag (gtag.js) - Google Analytics