diff --git a/.travis.yml b/.travis.yml index 73d5b5e48..5f887dab4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ jobs: - stage: test script: ./gradlew check - stage: build - script: ./gradlew build -x test + script: ./gradlew clean build -x test - stage: Build Docker Image for Release script: ./scripts/docker-build-release.sh - stage: Build Docker Image for Dev @@ -33,7 +33,8 @@ jobs: stages: - test - build - - GitHub Release + - name: GitHub Release + if: tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ - name: Build Docker Image for Release if: tag =~ /^v\d+\.\d+(\.\d+)?(-release)?$/ - name: Build Docker Image for Dev diff --git a/src/main/java/run/halo/app/handler/file/FileHandler.java b/src/main/java/run/halo/app/handler/file/FileHandler.java index ab4cf7fbf..1de46ee93 100644 --- a/src/main/java/run/halo/app/handler/file/FileHandler.java +++ b/src/main/java/run/halo/app/handler/file/FileHandler.java @@ -1,16 +1,16 @@ package run.halo.app.handler.file; -import run.halo.app.exception.FileOperationException; -import run.halo.app.model.enums.AttachmentType; -import run.halo.app.model.support.UploadResult; import org.apache.commons.lang3.StringUtils; import org.springframework.http.MediaType; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile; +import run.halo.app.exception.FileOperationException; +import run.halo.app.model.enums.AttachmentType; +import run.halo.app.model.support.UploadResult; -import java.io.File; +import static run.halo.app.model.support.HaloConst.FILE_SEPARATOR; /** * File handler interface. @@ -80,6 +80,6 @@ public interface FileHandler { static String normalizeDirectory(@NonNull String dir) { Assert.hasText(dir, "Directory full name must not be blank"); - return StringUtils.appendIfMissing(dir, File.separator); + return StringUtils.appendIfMissing(dir, FILE_SEPARATOR); } } diff --git a/src/main/java/run/halo/app/handler/file/LocalFileHandler.java b/src/main/java/run/halo/app/handler/file/LocalFileHandler.java index 64acef93b..4c626e5a8 100644 --- a/src/main/java/run/halo/app/handler/file/LocalFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/LocalFileHandler.java @@ -18,15 +18,15 @@ import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Calendar; -import java.util.Locale; import java.util.Objects; +import static run.halo.app.model.support.HaloConst.FILE_SEPARATOR; + /** * Local file handler. * @@ -97,7 +97,7 @@ public class LocalFileHandler implements FileHandler { int month = current.get(Calendar.MONTH) + 1; // Build directory - String subDir = UPLOAD_SUB_DIR + year + File.separator + month + File.separator; + String subDir = UPLOAD_SUB_DIR + year + FILE_SEPARATOR + month + FILE_SEPARATOR; String originalBasename = FilenameUtils.getBasename(file.getOriginalFilename()); diff --git a/src/main/java/run/halo/app/model/support/HaloConst.java b/src/main/java/run/halo/app/model/support/HaloConst.java index 922aeb6d1..49be00fa6 100644 --- a/src/main/java/run/halo/app/model/support/HaloConst.java +++ b/src/main/java/run/halo/app/model/support/HaloConst.java @@ -1,5 +1,7 @@ package run.halo.app.model.support; +import java.io.File; + /** *
  *     公共常量
@@ -25,6 +27,11 @@ public class HaloConst {
      */
     public static final String HALO_VERSION;
 
+    /**
+     * Path separator.
+     */
+    public static final String FILE_SEPARATOR = File.separator;
+
     /**
      * Suffix of freemarker template file
      */
diff --git a/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java b/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java
index f778a5c9e..9aeef3fa0 100644
--- a/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java
+++ b/src/main/java/run/halo/app/service/impl/AttachmentServiceImpl.java
@@ -21,6 +21,7 @@ import run.halo.app.repository.AttachmentRepository;
 import run.halo.app.service.AttachmentService;
 import run.halo.app.service.OptionService;
 import run.halo.app.service.base.AbstractCrudService;
+import run.halo.app.utils.HaloUtils;
 
 import javax.persistence.criteria.Predicate;
 import java.util.LinkedList;
@@ -108,7 +109,8 @@ public class AttachmentServiceImpl extends AbstractCrudService
  * 常用工具
@@ -31,6 +33,18 @@ import java.util.UUID;
 @Slf4j
 public class HaloUtils {
 
+    /**
+     * Changes file separator to url separator.
+     *
+     * @param pathname full path name must not be blank.
+     * @return text with url separator
+     */
+    public static String changeFileSeparatorToUrlSeparator(@NonNull String pathname) {
+        Assert.hasText(pathname, "Path name must not be blank");
+
+        return pathname.replace(FILE_SEPARATOR, "/");
+    }
+
     /**
      * Time format.
      *