diff --git a/ruoyi-system-file/src/main/java/com/ruoyi/file/FileRunner.java b/ruoyi-system-file/src/main/java/com/ruoyi/file/FileRunner.java new file mode 100644 index 0000000..dfd6616 --- /dev/null +++ b/ruoyi-system-file/src/main/java/com/ruoyi/file/FileRunner.java @@ -0,0 +1,29 @@ +package com.ruoyi.file; + +import com.ruoyi.file.config.SpringFileStorageProperties; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.context.annotation.Configuration; + +/** + *
+ * - 文件图片上传下载模块启动器
+ * 
+ * @author J.L.Zhou<12020042> - <151 1104 7708> + * @since 2024-11-13 11:08 + * @version 1.0 + */ +@Configuration +@Slf4j +@RequiredArgsConstructor +public class FileRunner implements ApplicationRunner { + + private final SpringFileStorageProperties properties; + @Override + public void run(ApplicationArguments args) throws Exception { + log.info("文件图片上传下载模块(File)模块启动成功"); + properties.init(); + } +} diff --git a/ruoyi-system-file/src/main/java/com/ruoyi/file/config/SpringFileStorageProperties.java b/ruoyi-system-file/src/main/java/com/ruoyi/file/config/SpringFileStorageProperties.java index 09c4a82..1f85c40 100644 --- a/ruoyi-system-file/src/main/java/com/ruoyi/file/config/SpringFileStorageProperties.java +++ b/ruoyi-system-file/src/main/java/com/ruoyi/file/config/SpringFileStorageProperties.java @@ -2,6 +2,10 @@ package com.ruoyi.file.config; import cn.hutool.core.img.ImgUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.ruoyi.common.utils.spring.SpringUtils; import lombok.AccessLevel; import lombok.Data; import lombok.Getter; @@ -10,10 +14,11 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; -import javax.annotation.PostConstruct; import java.awt.image.BufferedImage; import java.io.File; +import java.io.InputStream; @Configuration @@ -24,22 +29,48 @@ public class SpringFileStorageProperties extends org.dromara.x.file.storage.spri private Integer maxWidth; private Integer maxHeight; - private File watermark; + private String watermark = "classpath:/watermark.png"; private Integer thWidth; private Integer thHeight; @Getter @Setter(AccessLevel.PRIVATE) private BufferedImage watermarkImage; - @PostConstruct + /** + * 初始化在FileRunner中完成 + */ + // @PostConstruct public void init() { try { - if (watermark != null && watermark.isFile()) { - watermarkImage = ImgUtil.read(watermark); - log.warn("水印图片加载成功:" + watermark.toString()); + if (StrUtil.isBlank(watermark)) { + log.info("水印图片未配置,不添加水印"); + return; } + if (watermark.contains("://")) { + InputStream in = HttpUtil.createGet(watermark).execute().bodyStream(); + watermarkImage = ImgUtil.read(in); + IoUtil.close(in); + log.info("水印图片加载成功:" + watermark); + } else { + File file = new File(watermark); + if (file.isFile()) { + watermarkImage = ImgUtil.read(file); + log.info("水印图片加载成功:" + watermark); + return; + } + Resource resource = SpringUtils.context().getResource(watermark); + if (resource.exists() && resource.isFile()) { + watermarkImage = ImgUtil.read(resource.getFile()); + log.info("水印图片加载成功:" + watermark); + } else { + log.info("水印图片不存在:" + watermark); + } + + } + } catch (Exception e) { - log.warn("初始化水印失败", e); + log.warn("水印图片初始化失败: " + watermark, e); } } + }