package com.fjhx.email.utils; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.fjhx.email.config.exception.ServiceException; import com.obs.services.ObsClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import java.io.InputStream; import java.util.Date; import java.util.StringJoiner; @Configuration public class ObsFileUtil { private static String ak; private static String sk; private static String endPoint; private static String url; private static String bucketName; private static String active; public static String getCompleteUrl(String path) { return url + path; } @Value("${obs.ak}") public void setAk(String ak) { ObsFileUtil.ak = ak; } @Value("${obs.sk}") public void setSk(String sk) { ObsFileUtil.sk = sk; } @Value("${obs.endPoint}") public void setEndPoint(String endPoint) { ObsFileUtil.endPoint = endPoint; } @Value("${obs.url}") public void setUrl(String url) { ObsFileUtil.url = url; } @Value("${obs.bucketName}") public void setBucketName(String bucketName) { ObsFileUtil.bucketName = bucketName; } @Value("${spring.profiles.active}") public void setActive(String active) { ObsFileUtil.active = active; } public static String uploadFile(String fileName, InputStream inputStream) { // 文件后缀名 String suffix = FileUtil.getSuffix(fileName); // 文件路径 String objectKey = new StringJoiner("/") .add("byteSailing") .add("mail") .add(active) .add(DateUtil.format(new Date(), "yyyy/MM/dd")) .add(IdUtil.fastSimpleUUID() + (ObjectUtil.isEmpty(suffix) ? "" : "." + suffix)) .toString(); ObsClient obsClient = null; try { // 获取oss链接客户端 obsClient = getObsClient(); obsClient.putObject(bucketName, objectKey, inputStream); } catch (Exception e) { e.printStackTrace(); throw new ServiceException("文件上传失败"); } finally { IoUtil.close(obsClient); } return objectKey; } /** * 获取oss链接客户端 */ private static ObsClient getObsClient() { return new ObsClient(ak, sk, endPoint); } }