CKEditor與CKFinder學習--CKFinder源碼修改自定義上傳文件名


CKFinder的系列文章到目前應該說基本可以滿足開發需求了,不過還有一個小細節,CKFinder默認上傳的文件名和源文件名一致,如果文件名重復會自動添加編號“(1)”“(2)”等。

這里寫圖片描述

如果需要自定義上傳的文件名怎么辦呢?

先看效果

采用uuid來命名
這里寫圖片描述

時間戳作為前綴
這里寫圖片描述

下面給出兩種方案來實現ckfinder自定義文件名的方法,第一種只是思路,重點是第二種方法。我們通過修改ckfinder的源碼來實現ckfinder上傳文件名的自定義

方法一 自己捕獲圖片按鈕提供上傳

可以捕獲圖片按鈕的點擊事件

這里寫圖片描述

像捕獲其他按鈕的事件一樣。

這里寫圖片描述

關於事件的捕獲參考

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就是源代碼,將其解壓。

這里寫圖片描述

我們發現其源代碼是一個Maven工程。

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的文件,在服務器被重命名為0ed3be8dc1a14bec9b6326edd3fde511.png

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

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

參考文獻

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


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com