CKFinder的系列文章到目前應該說基本可以滿足開發需求了,不過還有一個小細節,CKFinder默認上傳的文件名和源文件名一致,如果文件名重復會自動添加編號“(1)”“(2)”等。
如果需要自定義上傳的文件名怎么辦呢?
先看效果
采用uuid來命名
時間戳作為前綴
下面給出兩種方案來實現ckfinder自定義文件名的方法,第一種只是思路,重點是第二種方法。我們通過修改ckfinder的源碼來實現ckfinder上傳文件名的自定義
可以捕獲圖片按鈕的點擊事件
像捕獲其他按鈕的事件一樣。
關於事件的捕獲參考
http://blog.csdn.net/frankcheng5143/article/details/50946142
這個方法不是本文的重點,本文的重點是第二中方法。
本文介紹這種方法,如何修改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
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。