AbstractOssStrategy.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.ruoyi.oss.service.abstractd;
  2. import cn.hutool.core.io.IoUtil;
  3. import cn.hutool.core.util.IdUtil;
  4. import com.ruoyi.common.utils.DateUtils;
  5. import com.ruoyi.common.utils.StringUtils;
  6. import com.ruoyi.oss.entity.UploadResult;
  7. import com.ruoyi.oss.properties.OssProperties;
  8. import com.ruoyi.oss.service.IOssStrategy;
  9. import java.io.InputStream;
  10. /**
  11. * 对象存储策略(支持七牛、阿里云、腾讯云、minio)
  12. *
  13. * @author Lion Li
  14. */
  15. public abstract class AbstractOssStrategy implements IOssStrategy {
  16. protected OssProperties properties;
  17. public abstract void init(OssProperties properties);
  18. @Override
  19. public abstract void createBucket();
  20. @Override
  21. public abstract String getServiceType();
  22. public String getPath(String prefix, String suffix) {
  23. // 生成uuid
  24. String uuid = IdUtil.fastSimpleUUID();
  25. // 文件路径
  26. String path = DateUtils.datePath() + "/" + uuid;
  27. if (StringUtils.isNotBlank(prefix)) {
  28. path = prefix + "/" + path;
  29. }
  30. return path + suffix;
  31. }
  32. @Override
  33. public abstract UploadResult upload(byte[] data, String path, String contentType);
  34. @Override
  35. public abstract void delete(String path);
  36. @Override
  37. public UploadResult upload(InputStream inputStream, String path, String contentType) {
  38. byte[] data = IoUtil.readBytes(inputStream);
  39. return this.upload(data, path, contentType);
  40. }
  41. @Override
  42. public abstract UploadResult uploadSuffix(byte[] data, String suffix, String contentType);
  43. @Override
  44. public abstract UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType);
  45. public abstract String getEndpointLink();
  46. }