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

最新文章

  1. [变]C#谜题(1-10)表达式篇
  2. shell获取ip
  3. linux下安装redis的详细过程
  4. File类的创建,删除文件
  5. Oracle的分页查询
  6. 常用SNS开源系统比较
  7. Jmeter之录制脚本
  8. flex弹性布局学习
  9. PHP核心技术
  10. 安装eclipse时跳转到网页提示JRE Missing
  11. [Matlab+C/C++] 读写二进制文件
  12. 配置Nginx部署静态资源和自动跳转到https
  13. Failed at the @ watch script 'cross-env NODE_ENV=development 使用cross-env解决跨平台设置NODE_ENV的问题
  14. linux中crw brw lrw等等文件属性是什么
  15. AVD Manager 模拟器使用
  16. docker内存和cpu调试
  17. Kafka+Zookeeper+Filebeat+ELK 搭建日志收集系统
  18. python---django中STATIC_ROOT和STATIC_URL以及STATICFILES_DIRS
  19. 使用sublime text3手动安装插件
  20. luogu P3065 first——trie树相关

热门文章

  1. 【BZOJ 1880】 [Sdoi2009]Elaxia的路线 (最短路树)
  2. android remoteView
  3. BZOJ3052 [wc2013] 糖果公园 【树上莫队】
  4. BZOJ3669 NOI2014魔法森林
  5. bzoj 1211: [HNOI2004]树的计数 -- purfer序列
  6. 用rem设置文字大小
  7. ExtJS中实现嵌套表格
  8. JVM调优总结 -Xms -Xmx -Xmn -Xss等
  9. Visual SVN 企业版代码管理平台的建设
  10. 为什么要用<!DOCTYPE>声明