From a3e3f7e01b6dceef49b978ed3f133213167e42fe Mon Sep 17 00:00:00 2001 From: dougang <78125310@kidgrow.com> Date: Thu, 03 Dec 2020 11:19:34 +0800 Subject: [PATCH] 1、OSS增加C端目录 2、修改上传路径,支持不同目录上传 --- kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java | 124 +++++++++++++++++++++++++++++----------- 1 files changed, 89 insertions(+), 35 deletions(-) diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java index ec404eb..4d30ebc 100644 --- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java +++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java @@ -2,12 +2,16 @@ import com.aliyun.oss.OSSClient; import com.aliyun.oss.common.auth.DefaultCredentialProvider; +import com.aliyun.oss.model.GetObjectRequest; +import com.aliyun.oss.model.OSSObject; import com.kidgrow.common.constant.SecurityConstants; import com.kidgrow.common.utils.DateUtil; +import com.kidgrow.common.utils.StringUtils; import com.kidgrow.filecenter.model.FileInfo; import com.kidgrow.filecenter.properties.FileServerProperties; import com.kidgrow.filecenter.service.impl.AbstractIFileService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -15,6 +19,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; import java.util.Date; import java.util.UUID; @@ -31,7 +36,6 @@ public class AliyunOSSAutoConfigure { @Autowired private FileServerProperties fileProperties; - /** @@ -59,45 +63,26 @@ return fileProperties.getType(); } + @Value("${spring.profiles.active}") + private String OssPathEn; + @Override protected void uploadFile(MultipartFile file, FileInfo fileInfo) throws Exception { - String clientID= httpServletRequest.getHeader(SecurityConstants.CLIENT_HEADER); - String folderByDate =DateUtil.formatDate(new Date()); - int begin = file.getOriginalFilename().indexOf("."); + String clientID = httpServletRequest.getHeader(SecurityConstants.CLIENT_HEADER); + String hospitalID = httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER); + String depID = httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER); + String folderByDate = DateUtil.formatDate(new Date()); + int begin = file.getOriginalFilename().lastIndexOf("."); int last = file.getOriginalFilename().length(); String fileType = file.getOriginalFilename().substring(begin, last); - String fileName= UUID.randomUUID().toString().replaceAll("-","")+fileType; + String fileName = UUID.randomUUID().toString().replaceAll("-", "") + fileType; String fileFolder = ""; - if(clientID.equals("hospital")){//医院端平台, - - if ((fileInfo.getImgType() != null)) { - // 光片需要按照根据医院ID,科室ID,日期进行OSS存储 - if (fileInfo.getImgType().toLowerCase().equals("xray")) { - String hospitalID = httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER); - String depID = httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER); - fileFolder = "Xray/" + hospitalID + "/" + depID + "/"+ folderByDate + "/"; - } - // 医院Logo只保存在一个目录中 - else if (fileInfo.getImgType().toLowerCase().equals("logo")) { - fileFolder = "HospitalLogo/"; - }else if (fileInfo.getImgType().toLowerCase().equals("doctor")) { - fileFolder = "DoctorImage/"; - } - else { - fileFolder = "OtherImage/"+ folderByDate + "/"; - } - - } else { - fileFolder = "OtherImage/"+ folderByDate + "/"; - } - - ossClient.putObject(fileProperties.getOss().getBucketName(), fileFolder + fileName, file.getInputStream()); - fileInfo.setUrl(fileProperties.getOss().getDomain() + fileFolder + fileName); - - } - else { - ossClient.putObject(fileProperties.getOss().getBucketName(), fileProperties.getOss().getFolder() + folderByDate + "/" + fileName, file.getInputStream()); - fileInfo.setUrl(fileProperties.getOss().getDomain() + fileProperties.getOss().getFolder() + folderByDate + "/" + fileName); + if (clientID.equals("hospital")) {//医院端平台, + fileFolder = FilePath(fileInfo.getImgType(), folderByDate, hospitalID, depID); + fileUpLoadOss(fileInfo, fileFolder + fileName, file.getInputStream()); + } else { + fileFolder = FilePath(fileInfo.getImgType(), folderByDate, hospitalID, depID); + fileUpLoadOss(fileInfo, fileFolder + fileName, file.getInputStream()); } } @@ -107,5 +92,74 @@ ossClient.deleteObject(fileProperties.getOss().getBucketName(), fileInfo.getName()); return true; } + + /** + * 给OSS上上传文件 + * + * @param fileInfo 返回对象 + * @param newFilePath 上传到的文件路径 + * @param fileStream 要上传的文件流 + */ + @Override + public void fileUpLoadOss(FileInfo fileInfo, String newFilePath, InputStream fileStream) { + ossClient.putObject(fileProperties.getOss().getBucketName(), newFilePath, fileStream); + fileInfo.setUrl(fileProperties.getOss().getDomain() + newFilePath); + + } + @Override + public OSSObject down(String url) { + GetObjectRequest request = new GetObjectRequest(fileProperties.getOss().getBucketName(), url); + return ossClient.getObject(request); + } + + /** + * 组合sso上的文件路径 + * + * @param imgType + * @return + */ + @Override + public String FilePath(String imgType, String folderByDate, String hospitalId, String departmentId) { + //返回的文件路径 + String fileFolder = OssPathEn+"/"; + + + if (StringUtils.isNotBlank(imgType)) { + // 光片需要按照根据医院ID,科室ID,日期进行OSS存储 + if (imgType.toLowerCase().equals("xray")) { + + if (StringUtils.isNotBlank(hospitalId) && + StringUtils.isNotBlank(departmentId)) { + fileFolder += "Xray/" + hospitalId + "/" + departmentId + "/" + folderByDate + "/"; + } else { + fileFolder += "Xray/" + folderByDate + "/"; + } + + } else if (imgType.toLowerCase().equals("app")) { + //移动端APP上传 + if (StringUtils.isNotBlank(hospitalId) && + StringUtils.isNotBlank(departmentId)) { + fileFolder += "AppXray/" + hospitalId + "/" + departmentId + "/" + folderByDate + "/"; + } else { + fileFolder += "AppXray/" + folderByDate + "/"; + } + } + // 医院Logo只保存在一个目录中 + else if (imgType.toLowerCase().equals("logo")) { + fileFolder += "HospitalLogo/"; + } else if (imgType.toLowerCase().equals("doctor")) { + fileFolder += "DoctorImage/"; + } else if (imgType.toLowerCase().equals("customerhospital")) { + fileFolder += "Customer/Hospital/" + folderByDate + "/"; + } else if (imgType.toLowerCase().equals("customerhead")) { + fileFolder += "Customer/HeadImg/" + folderByDate + "/"; + }else { + fileFolder += "OtherImage/" + folderByDate + "/"; + } + } else { + fileFolder += "OtherImage/" + folderByDate + "/"; + } + return fileFolder; + } } } -- Gitblit v1.8.0