zoukankan      html  css  js  c++  java
  • CKEditor与CKFinder学习--CKFinder源代码改动自己定义上传文件名称

    CKFinder的系列文章到眼下应该说基本能够满足开发需求了,只是另一个小细节,CKFinder默认上传的文件名称和源文件名称一致,假设文件名称反复会自己主动加入编号“(1)”“(2)”等。

    这里写图片描写叙述

    假设须要自己定义上传的文件名称怎么办呢?

    先看效果

    採用uuid来命名
    这里写图片描写叙述

    时间戳作为前缀
    这里写图片描写叙述

    以下给出两种方案来实现ckfinder自己定义文件名称的方法。第一种仅仅是思路,重点是另外一种方法。我们通过改动ckfinder的源代码来实现ckfinder上传文件名称的自己定义

    方法一 自己捕获图片button提供上传

    能够捕获图片button的点击事件

    这里写图片描写叙述

    像捕获其它button的事件一样。

    这里写图片描写叙述

    关于事件的捕获參考

    http://blog.csdn.net/frankcheng5143/article/details/50946142

    这种方法不是本文的重点。本文的重点是第二中方法。

    方法二 改动CKFinder的源代码

    本文介绍这样的方法。怎样改动CKFinder的源代码来自己定义上传文件的文件名称。

    本文讲介绍怎样载入ckfinder的源代码,然后改动上传文件重命名的代码。最后将改动后的代码打包成jar包。

    下载源代码

    去ckfinder的官网下载,我下载的是Java版本号

    https://cksource.com/ckfinder/download

    眼下的最新版下载地址

    https://download.cksource.com/CKFinder/CKFinder%20for%20Java/2.6.0/ckfinder_java_2.6.0.zip?

    这里写图片描写叙述

    当中的_source就是源代码,将其解压。

    这里写图片描写叙述

    我们发现其源代码是一个Mavenproject。

    ok。首先确保电脑上安装成功了Maven。Eclipse里也成功配置了Maven。

    载入源代码

    打开Eclipse

    File -> Import 选择Existing Maven Projects,然后Next

    这里写图片描写叙述

    浏览刚才解压的位置,然后Finish

    这里写图片描写叙述

    稍等片刻。Eclipse会载入

    这里写图片描写叙述

    假设如今报错,先不用管等构建完毕,构建的时候有些错误会消失。

    这里写图片描写叙述

    改动源代码

    我们须要改动的代码在CKFinder下
    我们须要改动com.ckfinder.connector.handlers.command下的FileUploadCommand.java

    这里写图片描写叙述

    通过凝视我们发现有一个字段叫newFilename就是它了

    定位到validateUploadItem方法

    这里写图片描写叙述

        private boolean validateUploadItem(final FileItem item, final String path) {
    
            if (item.getName() != null && item.getName().length() > 0) {
                this.fileName = getFileItemName(item);
            } else {
                this.errorCode = Constants.Errors.CKFINDER_CONNECTOR_ERROR_UPLOADED_INVALID;
                return false;
            }
            // 就是这一行代码来重命名的
    
            this.newFileName = this.fileName;
    
            // 以下的代码省略了,由于也不会动它们
        }

    我将上传的文件名称採用uuid进行重命名。

    也能够在文件名称前面加上时间戳,这个依据自己的需求来定。

    代码例如以下

            // 文件后缀名
            String extentsion = FileUtils.getFileExtension(this.fileName); 
            String uuid = UUID.randomUUID().toString(); 
            // 去掉“-”符号 
            String id = uuid.substring(0,8)+uuid.substring(9,13)+uuid.substring(14,18)+uuid.substring(19,23)+uuid.substring(24); 
            this.newFileName = id+"."+extentsion;
    
            // this.newFileName = this.fileName;

    假设像以时间戳作为前缀能够这么改

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String prefix = sdf.format(new Date());
        this.newFileName = prefix+"-"+this.fileName;

    好了,代码改动完毕。

    打包源代码

    Run AS Maven build( 注意是以下的 )

    这里写图片描写叙述

    在Goals 中输入package。然后点击Run

    这里写图片描写叙述

    看到例如以下信息说明打包成功。

    这里写图片描写叙述

    进入源代码的文件夹,我们发如今CKFinder文件夹下多了一个target文件夹

    这里写图片描写叙述

    target目中中的CKFinder-2.6.0.jar就是我们打包后生成的jar

    这里写图片描写叙述

    至此jar包已经生成。最后一步就是替换曾经的jar。为了有所差别,我将生成的CKFinder-2.6.0.jar重命名为CKFinder-uuid-2.6.0.jar

    部署測试

    将项目中引用的CKFinder-2.6.0.jar替换为自己改动过的CKFinder-uuid-2.6.0.jar

    这里写图片描写叙述

    执行并測试

    这里写图片描写叙述

    我们发现上传了一个ubuntu-alt.png的文件,在server被重命名为0ed3be8dc1a14bec9b6326edd3fde511.png

    CKFinder-uuid-2.6.0.jar的下载地址

    http://download.csdn.net/detail/frankcheng5143/9472382

    參考文献

    http://blog.csdn.net/cuihaiyang/article/details/6526190

  • 相关阅读:
    Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
    Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
    Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
    Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
    Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
    IDEA 内网手动添加oracle,mysql等数据源,以及server returns invalid timezone错误配置
    eclipse maven设置
    IntelliJ IDE 常用配置
    eclipse maven 常见问题解决方案
    Maven 安装和配置
  • 原文地址:https://www.cnblogs.com/twodog/p/12139682.html
Copyright © 2011-2022 走看看