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. *