From 33dfda2d909607c5ac80d6c0200ac97b3f813705 Mon Sep 17 00:00:00 2001 From: yangjianze Date: Mon, 14 Nov 2022 14:52:24 +0800 Subject: [PATCH] =?UTF-8?q?feature(=E6=8A=A5=E5=91=8A=E6=8F=90=E4=BA=A4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IReportServiceImpl.java | 14 ++++++++++- .../com/adc/da/report/util/ObsBootUtil.java | 23 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index a998ef0..a0de580 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -19,6 +19,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; @@ -64,6 +66,11 @@ public class IReportServiceImpl implements IReportService { @Resource private OSSClientUtil ossClientUtil; + @Value("${uploadType}") + private String uploadType; + + @Autowired + private ObsBootUtil obsBootUtil; /** * 新增或编辑报告 * @@ -274,7 +281,12 @@ public class IReportServiceImpl implements IReportService { FileEntity fileEntity = fileDao.selectById(fileId); String path = uploadFile + fileEntity.getSavePath(); FileOutputStream outputStream = new FileOutputStream(path); - ossClientUtil.getFileFromOSS(fileEntity.getSavePath(), outputStream); + // 上传方式:阿里云:alioss 华为云:hwobs + if (uploadType.equals("hwobs")){ + obsBootUtil.getFileFromOBS(fileEntity.getSavePath(), outputStream); + }else if (uploadType.equals("alioss")){ + ossClientUtil.getFileFromOSS(fileEntity.getSavePath(), outputStream); + } String html = null; switch (fileEntity.getFileType()) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/ObsBootUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/ObsBootUtil.java index 9bd57d8..cac7873 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/ObsBootUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/ObsBootUtil.java @@ -95,6 +95,29 @@ public class ObsBootUtil { } + public void getFileFromOBS(String objectKey, FileOutputStream outputStream) throws IOException { + obsClient = new ObsClient(configProperties.getAccessKey(), configProperties.getSecretKey(), configProperties.getEndPoint()); + InputStream objectContent = null; + try { + ObsObject obsObject = obsClient.getObject(configProperties.getBucketName(), objectKey); + objectContent = obsObject.getObjectContent(); + if (!Objects.isNull(objectContent)){ + byte[] bt = new byte[1024 * 1024]; + int len = 0; + while ((len = objectContent.read(bt)) != -1) { + outputStream.write(bt, 0, len); + } + } + }catch (ObsException | IOException oe){ + throw new AdcDaBaseException("OBS下载文件失败"); + }finally { + // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。 + objectContent.close(); + outputStream.close(); + } + + } + //文件删除 public void deleteFile(String objectKey) { obsClient.deleteObject(configProperties.getBucketName(), objectKey);