AbstractOssStrategy.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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.enumd.OssEnumd;
  8. import com.ruoyi.oss.properties.OssProperties;
  9. import com.ruoyi.oss.service.IOssStrategy;
  10. import java.io.InputStream;
  11. /**
  12. * 对象存储策略(支持七牛、阿里云、腾讯云、minio)
  13. *
  14. * @author Lion Li
  15. */
  16. public abstract class AbstractOssStrategy implements IOssStrategy {
  17. protected OssProperties properties;
  18. public boolean isInit = false;
  19. public void init(OssProperties properties) {
  20. this.properties = properties;
  21. }
  22. @Override
  23. public abstract void createBucket();
  24. @Override
  25. public abstract OssEnumd getServiceType();
  26. public String getPath(String prefix, String suffix) {
  27. // 生成uuid
  28. String uuid = IdUtil.fastSimpleUUID();
  29. // 文件路径
  30. String path = DateUtils.datePath() + "/" + uuid;
  31. if (StringUtils.isNotBlank(prefix)) {
  32. path = prefix + "/" + path;
  33. }
  34. return path + suffix;
  35. }
  36. @Override
  37. public abstract UploadResult upload(byte[] data, String path, String contentType);
  38. @Override
  39. public abstract void delete(String path);
  40. @Override
  41. public UploadResult upload(InputStream inputStream, String path, String contentType) {
  42. byte[] data = IoUtil.readBytes(inputStream);
  43. return this.upload(data, path, contentType);
  44. }
  45. @Override
  46. public abstract UploadResult uploadSuffix(byte[] data, String suffix, String contentType);
  47. @Override
  48. public abstract UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType);
  49. /**
  50. * 获取域名访问链接
  51. *
  52. * @return 域名访问链接
  53. */
  54. public abstract String getEndpointLink();
  55. }