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

  • 相关阅读:
    BZOJ2594 [Wc2006]水管局长数据加强版 LCT kruskal
    BZOJ1180 [CROATIAN2009]OTOCI LCT
    BZOJ2631 tree LCT
    BZOJ1901 Zju2112 Dynamic Rankings 主席树
    BZOJ1367 [Baltic2004]sequence 堆 左偏树
    BZOJ5120 [2017国家集训队测试]无限之环 费用流
    BZOJ3377 [Usaco2004 Open]The Cow Lineup 奶牛序列 其他
    BZOJ3091 城市旅行 LCT
    BZOJ2843 极地旅行社 LCT
    BZOJ1269 [AHOI2006]文本编辑器editor splay
  • 原文地址:https://www.cnblogs.com/twodog/p/12139685.html
Copyright © 2011-2022 走看看