package com.ruoyi.oss.service.abstractd; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.IOssStrategy; import java.io.InputStream; /** * 对象存储策略(支持七牛、阿里云、腾讯云、minio) * * @author Lion Li */ public abstract class AbstractOssStrategy implements IOssStrategy { protected OssProperties properties; public abstract void init(OssProperties properties); @Override public abstract void createBucket(); @Override public abstract String getServiceType(); public String getPath(String prefix, String suffix) { // 生成uuid String uuid = IdUtil.fastSimpleUUID(); // 文件路径 String path = DateUtils.datePath() + "/" + uuid; if (StringUtils.isNotBlank(prefix)) { path = prefix + "/" + path; } return path + suffix; } @Override public abstract UploadResult upload(byte[] data, String path, String contentType); @Override public abstract void delete(String path); @Override public UploadResult upload(InputStream inputStream, String path, String contentType) { byte[] data = IoUtil.readBytes(inputStream); return this.upload(data, path, contentType); } @Override public abstract UploadResult uploadSuffix(byte[] data, String suffix, String contentType); @Override public abstract UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType); public abstract String getEndpointLink(); }