|
|
@@ -1,11 +1,14 @@
|
|
|
package com.jfinal.upload;
|
|
|
|
|
|
import com.jfinal.kit.StrKit;
|
|
|
+import com.jfinal.kit.TimeKit;
|
|
|
|
|
|
import java.io.File;
|
|
|
+import java.util.Date;
|
|
|
|
|
|
/**
|
|
|
* 进度上传文件配置
|
|
|
+ *
|
|
|
* @author 山东小木
|
|
|
*/
|
|
|
public class ProgressUploadFileConfig {
|
|
|
@@ -13,38 +16,54 @@ public class ProgressUploadFileConfig {
|
|
|
* 进度上传文件 rename 策略
|
|
|
* 给了默认实现
|
|
|
*/
|
|
|
- private static ProgressUploadFileRenameFunc renameFunc = new DefaultProgressUploadFileRenameFunc();
|
|
|
+ private static ProgressUploadFileRenameFunc renameFunc = new TimeProgressUploadFileRenameFunc();
|
|
|
|
|
|
/**
|
|
|
* 设置自己的策略
|
|
|
+ *
|
|
|
* @param func
|
|
|
*/
|
|
|
- public static void setRenameFunc(ProgressUploadFileRenameFunc func){
|
|
|
+ public static void setRenameFunc(ProgressUploadFileRenameFunc func) {
|
|
|
renameFunc = func;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置UUID rename策略
|
|
|
*/
|
|
|
- public static void setUUIDRenameFunc(){
|
|
|
+ public static void setUUIDRenameFunc() {
|
|
|
renameFunc = new UUIDProgressUploadFileRenameFunc();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 设置基于当前时间格式化的 rename策略
|
|
|
+ */
|
|
|
+ public static void setTimeRenameFunc() {
|
|
|
+ renameFunc = new TimeProgressUploadFileRenameFunc();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置重名自动计数加1格式化 rename策略
|
|
|
+ */
|
|
|
+ public static void setCountRenameFunc() {
|
|
|
+ renameFunc = new CountProgressUploadFileRenameFunc();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取当前策略
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
- public static ProgressUploadFileRenameFunc getRenameFunc(){
|
|
|
- return renameFunc==null?new DefaultProgressUploadFileRenameFunc():renameFunc;
|
|
|
+ public static ProgressUploadFileRenameFunc getRenameFunc() {
|
|
|
+ return renameFunc == null ? new TimeProgressUploadFileRenameFunc() : renameFunc;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 默认策略实现
|
|
|
+ * rename计数策略实现
|
|
|
*/
|
|
|
- static class DefaultProgressUploadFileRenameFunc implements ProgressUploadFileRenameFunc {
|
|
|
+ static class CountProgressUploadFileRenameFunc implements ProgressUploadFileRenameFunc {
|
|
|
@Override
|
|
|
- public String call(String directory,String originFileName) {
|
|
|
- File file = new File(directory+"/"+originFileName);
|
|
|
+ public String call(String directory, String originFileName) {
|
|
|
+ File file = new File(directory + "/" + originFileName);
|
|
|
int count = 1;
|
|
|
String newFilename = originFileName;
|
|
|
while (file.exists()) {
|
|
|
@@ -69,13 +88,35 @@ public class ProgressUploadFileConfig {
|
|
|
*/
|
|
|
static class UUIDProgressUploadFileRenameFunc implements ProgressUploadFileRenameFunc {
|
|
|
@Override
|
|
|
- public String call(String directory,String originFileName) {
|
|
|
+ public String call(String directory, String originFileName) {
|
|
|
int dotIndex = originFileName.lastIndexOf(".");
|
|
|
String extension = "";
|
|
|
if (dotIndex != -1) {
|
|
|
extension = originFileName.substring(dotIndex);
|
|
|
}
|
|
|
- return StrKit.getRandomUUID()+extension;
|
|
|
+ return StrKit.getRandomUUID() + extension;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 内置基于时间的文件名rename策略
|
|
|
+ */
|
|
|
+ static class TimeProgressUploadFileRenameFunc implements ProgressUploadFileRenameFunc {
|
|
|
+ @Override
|
|
|
+ public String call(String directory, String originFileName) {
|
|
|
+ File file;
|
|
|
+ String newFilename = originFileName;
|
|
|
+ do {
|
|
|
+ int dotIndex = originFileName.lastIndexOf(".");
|
|
|
+ newFilename = TimeKit.format(new Date(), "yyyyMMddHHmmssSSS");
|
|
|
+ String extension = "";
|
|
|
+ if (dotIndex != -1) {
|
|
|
+ extension = originFileName.substring(dotIndex);
|
|
|
+ newFilename = newFilename + extension;
|
|
|
+ }
|
|
|
+ file = new File(directory + newFilename);
|
|
|
+ } while (file.exists());
|
|
|
+ return newFilename;
|
|
|
}
|
|
|
}
|
|
|
}
|