瀏覽代碼

文件上传增加使用原始文件名存储

zhouhao 3 年之前
父節點
當前提交
e57a9a48e2

+ 16 - 5
hsweb-system/hsweb-system-file/src/main/java/org/hswebframework/web/file/FileUploadProperties.java

@@ -22,6 +22,9 @@ public class FileUploadProperties {
 
     private String staticLocation = "/static";
 
+    //是否使用原始文件名进行存储
+    private boolean useOriginalFileName = false;
+
     private Set<String> allowFiles;
 
     private Set<String> denyFiles;
@@ -51,7 +54,7 @@ public class FileUploadProperties {
             if (denyMediaType.contains(mediaType.toString())) {
                 return true;
             }
-            defaultDeny =  false;
+            defaultDeny = false;
         }
 
         if (CollectionUtils.isNotEmpty(allowMediaType)) {
@@ -67,16 +70,24 @@ public class FileUploadProperties {
     public StaticFileInfo createStaticSavePath(String name) {
         String fileName = IDGenerator.SNOW_FLAKE_STRING.generate();
         String filePath = DateFormatter.toString(new Date(), "yyyyMMdd");
-        String absPath = staticFilePath.concat("/").concat(filePath);
+
         //文件后缀
         String suffix = name.contains(".") ?
                 name.substring(name.lastIndexOf(".")) : "";
 
-        new File(absPath).mkdirs();
         StaticFileInfo info = new StaticFileInfo();
 
-        info.location = staticLocation + "/" + filePath + "/" + fileName + suffix;
-        info.savePath = absPath + "/" + fileName + suffix;
+        if (useOriginalFileName) {
+            filePath = filePath + "/" + fileName;
+            fileName = name;
+        } else {
+            fileName = fileName + suffix;
+        }
+        String absPath = staticFilePath.concat("/").concat(filePath);
+        new File(absPath).mkdirs();
+
+        info.location = staticLocation + "/" + filePath + "/" + fileName;
+        info.savePath = absPath + "/" + fileName;
 
         return info;
     }

+ 3 - 1
hsweb-system/hsweb-system-file/src/main/java/org/hswebframework/web/file/service/LocalFileStorageService.java

@@ -5,6 +5,7 @@ import lombok.SneakyThrows;
 import org.hswebframework.web.file.FileUploadProperties;
 import org.springframework.http.codec.multipart.FilePart;
 import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
 
 import java.io.File;
 import java.io.InputStream;
@@ -55,6 +56,7 @@ public class LocalFileStorageService implements FileStorageService {
                         }
                         return info.getLocation();
                     }
-                });
+                })
+                .subscribeOn(Schedulers.boundedElastic());
     }
 }

+ 1 - 0
hsweb-system/hsweb-system-file/src/test/java/org/hswebframework/web/file/web/ReactiveFileControllerTest.java

@@ -29,6 +29,7 @@ public class ReactiveFileControllerTest {
 
     static {
         System.setProperty("hsweb.file.upload.static-file-path","./target/upload");
+//        System.setProperty("hsweb.file.upload.use-original-file-name","true");
     }
 
     @Autowired