From 15f8fbb49b68f8155605629a82617a5ecf0ab774 Mon Sep 17 00:00:00 2001 From: zhaojun1998 Date: Mon, 20 Apr 2020 22:37:12 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91=E8=85=BE=E8=AE=AF=E4=BA=91=E7=A7=81=E6=9C=89=E7=A9=BA?= =?UTF-8?q?=E9=97=B4=E6=97=B6,=20=E5=AF=86=E7=A0=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=8A=A0=E8=BD=BD=E7=9A=84=20BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zfile/model/dto/StorageStrategyConfig.java | 2 +- .../zfile/service/DriveConfigService.java | 8 +++++++- .../service/base/AbstractBaseFileService.java | 2 +- .../base/AbstractS3BaseFileService.java | 1 + .../zfile/service/impl/AliyunServiceImpl.java | 3 ++- .../java/im/zhaojun/zfile/util/HttpUtil.java | 18 +++++++++++++++--- 6 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/main/java/im/zhaojun/zfile/model/dto/StorageStrategyConfig.java b/src/main/java/im/zhaojun/zfile/model/dto/StorageStrategyConfig.java index ce35f35..6801377 100644 --- a/src/main/java/im/zhaojun/zfile/model/dto/StorageStrategyConfig.java +++ b/src/main/java/im/zhaojun/zfile/model/dto/StorageStrategyConfig.java @@ -12,7 +12,7 @@ public class StorageStrategyConfig { private String pathStyle; - private boolean isPrivate; + private Boolean isPrivate; private String accessKey; diff --git a/src/main/java/im/zhaojun/zfile/service/DriveConfigService.java b/src/main/java/im/zhaojun/zfile/service/DriveConfigService.java index 9d0528e..44bb99c 100644 --- a/src/main/java/im/zhaojun/zfile/service/DriveConfigService.java +++ b/src/main/java/im/zhaojun/zfile/service/DriveConfigService.java @@ -2,6 +2,7 @@ package im.zhaojun.zfile.service; import im.zhaojun.zfile.context.StorageTypeContext; import im.zhaojun.zfile.exception.InitializeException; +import im.zhaojun.zfile.model.constant.StorageConfigConstant; import im.zhaojun.zfile.model.dto.DriveConfigDTO; import im.zhaojun.zfile.model.dto.StorageStrategyConfig; import im.zhaojun.zfile.model.entity.DriveConfig; @@ -19,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.lang.reflect.Field; import java.util.List; +import java.util.Objects; /** * 驱动器 Service 类 @@ -87,7 +89,11 @@ public class DriveConfigService { try { declaredField = STORAGE_STRATEGY_CONFIG_CLASS.getDeclaredField(key); declaredField.setAccessible(true); - declaredField.set(storageStrategyConfig, value); + if (Objects.equals(StorageConfigConstant.IS_PRIVATE, key)) { + declaredField.set(storageStrategyConfig, Boolean.valueOf(value)); + } else { + declaredField.set(storageStrategyConfig, value); + } } catch (NoSuchFieldException | IllegalAccessException e) { if (log.isDebugEnabled()) { log.debug("通过反射, 将字段 {" + key + "}注入 DriveConfigDTO 时出现异常:", e); diff --git a/src/main/java/im/zhaojun/zfile/service/base/AbstractBaseFileService.java b/src/main/java/im/zhaojun/zfile/service/base/AbstractBaseFileService.java index 7774180..38ebd81 100644 --- a/src/main/java/im/zhaojun/zfile/service/base/AbstractBaseFileService.java +++ b/src/main/java/im/zhaojun/zfile/service/base/AbstractBaseFileService.java @@ -29,11 +29,11 @@ public abstract class AbstractBaseFileService implements BaseFileService { */ protected boolean isInitialized = false; + /** * 基路径 */ protected String basePath; - /** * 驱动器 ID */ diff --git a/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java b/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java index 589f6b3..b4ed994 100644 --- a/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java +++ b/src/main/java/im/zhaojun/zfile/service/base/AbstractS3BaseFileService.java @@ -93,6 +93,7 @@ public abstract class AbstractS3BaseFileService extends AbstractBaseFileService * @return S3 对象访问地址 */ public String s3ObjectUrl(String path) { + basePath = basePath == null ? "" : basePath; String fullPath = StringUtils.removeFirstSeparator(StringUtils.removeDuplicateSeparator(basePath + "/" + path)); // 如果不是私有空间, 且指定了加速域名, 则直接返回下载地址. diff --git a/src/main/java/im/zhaojun/zfile/service/impl/AliyunServiceImpl.java b/src/main/java/im/zhaojun/zfile/service/impl/AliyunServiceImpl.java index 6b76745..bd73e93 100644 --- a/src/main/java/im/zhaojun/zfile/service/impl/AliyunServiceImpl.java +++ b/src/main/java/im/zhaojun/zfile/service/impl/AliyunServiceImpl.java @@ -57,7 +57,7 @@ public class AliyunServiceImpl extends AbstractS3BaseFileService implements Base isInitialized = testConnection(); } } catch (Exception e) { - log.debug(getStorageTypeEnum().getDescription() + " 初始化异常, 已跳过"); + log.debug(getStorageTypeEnum().getDescription() + " 初始化异常, 已跳过", e); } } @@ -75,6 +75,7 @@ public class AliyunServiceImpl extends AbstractS3BaseFileService implements Base add(new StorageConfig("domain", "Bucket 域名 / CDN 加速域名")); add(new StorageConfig("endPoint", "区域")); add(new StorageConfig("basePath", "基路径")); + add(new StorageConfig("isPrivate", "是否是私有空间")); }}; } } \ No newline at end of file diff --git a/src/main/java/im/zhaojun/zfile/util/HttpUtil.java b/src/main/java/im/zhaojun/zfile/util/HttpUtil.java index 5d5cef3..1c6104d 100644 --- a/src/main/java/im/zhaojun/zfile/util/HttpUtil.java +++ b/src/main/java/im/zhaojun/zfile/util/HttpUtil.java @@ -3,9 +3,12 @@ package im.zhaojun.zfile.util; import im.zhaojun.zfile.exception.PreviewException; import im.zhaojun.zfile.model.constant.ZFileConstant; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpHeaders; import org.springframework.web.client.RestTemplate; +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; + /** * @author zhaojun */ @@ -30,8 +33,17 @@ public class HttpUtil { * 获取远程文件大小 */ public static Long getRemoteFileSize(String url) { - HttpHeaders httpHeaders = new RestTemplate().headForHeaders(url); - return httpHeaders.getContentLength(); + long size = 0; + URL urlObject; + try { + urlObject = new URL(url); + URLConnection conn = urlObject.openConnection(); + size = conn.getContentLength(); + } catch (IOException e) { + e.printStackTrace(); + } + + return size; } }