diff --git a/src/main/java/run/halo/app/controller/core/CommonController.java b/src/main/java/run/halo/app/controller/core/CommonController.java index 02d85150b..40a9b8277 100644 --- a/src/main/java/run/halo/app/controller/core/CommonController.java +++ b/src/main/java/run/halo/app/controller/core/CommonController.java @@ -83,7 +83,7 @@ public class CommonController extends AbstractErrorController { model.addAttribute("error", errorDetail); model.addAttribute("meta_keywords", optionService.getSeoKeywords()); model.addAttribute("meta_description", optionService.getSeoDescription()); - + model.addAttribute("message", HttpStatus.valueOf(optionService.getSeoKeywords()).value()); log.debug("Error detail: [{}]", errorDetail); HttpStatus status = getStatus(request); diff --git a/src/main/java/run/halo/app/utils/FilenameUtils.java b/src/main/java/run/halo/app/utils/FilenameUtils.java index fe44e4c43..571e13a2a 100644 --- a/src/main/java/run/halo/app/utils/FilenameUtils.java +++ b/src/main/java/run/halo/app/utils/FilenameUtils.java @@ -5,6 +5,8 @@ import org.springframework.lang.NonNull; import org.springframework.util.Assert; import java.io.File; +import java.util.Arrays; +import java.util.List; /** * Filename utilities. @@ -44,6 +46,14 @@ public class FilenameUtils { // Find last dot int dotLastIndex = StringUtils.lastIndexOf(filename, '.'); + String[] split = filename.split("\\."); + + List extList = Arrays.asList("gz", "bz2"); + + if (extList.contains(split[split.length - 1]) && split.length >= 3) { + return filename.substring(0, filename.substring(0, dotLastIndex).lastIndexOf('.')); + } + if (dotLastIndex < 0) { return filename; } @@ -84,6 +94,14 @@ public class FilenameUtils { return StringUtils.EMPTY; } + String[] split = filename.split("\\."); + + List extList = Arrays.asList("gz", "bz2"); + + if (extList.contains(split[split.length - 1]) && split.length >= 3) { + return filename.substring(filename.substring(0, dotLastIndex).lastIndexOf('.') + 1); + } + return filename.substring(dotLastIndex + 1); } diff --git a/src/test/java/run/halo/app/utils/FilenameUtilsTest.java b/src/test/java/run/halo/app/utils/FilenameUtilsTest.java index 364c43e63..77fb5f1ad 100644 --- a/src/test/java/run/halo/app/utils/FilenameUtilsTest.java +++ b/src/test/java/run/halo/app/utils/FilenameUtilsTest.java @@ -16,18 +16,24 @@ class FilenameUtilsTest { // a.txt --> a.txt // a/b/c --> c // a/b/c/ --> "" + // he/ll/o.tar.gz --> "o" + // h/i.tar.bz2 --> "i" @Test void getBasename() { assertEquals("c", FilenameUtils.getBasename("a/b/c.txt")); assertEquals("a", FilenameUtils.getBasename("a.txt")); assertEquals("c", FilenameUtils.getBasename("a/b/c")); assertEquals("", FilenameUtils.getBasename("a/b/c/")); + assertEquals("o", FilenameUtils.getBasename("he/ll/o.tar.gz")); + assertEquals("i", FilenameUtils.getBasename("h/i.tar.bz2")); } // foo.txt --> "txt" // a/b/c.jpg --> "jpg" // a/b.txt/c --> "" // a/b/c --> "" + // he/ll/o.tar.gz --> "tar.gz" + // he/ll/o.tar.bz2 --> "tar.bz2" @Test void getExtension() { assertEquals("txt", FilenameUtils.getExtension("foo.txt")); @@ -35,5 +41,7 @@ class FilenameUtilsTest { assertEquals("", FilenameUtils.getExtension("a/b.txt/c")); assertEquals("", FilenameUtils.getExtension("a/b/c")); assertEquals("", FilenameUtils.getExtension("a/b/c/")); + assertEquals("tar.gz", FilenameUtils.getExtension("he/ll/o.tar.gz")); + assertEquals("tar.bz2", FilenameUtils.getExtension("he/ll/o.tar.bz2")); } }