1. package com.belle.yitiansystem.util;
    2. import cn.hutool.core.io.FileUtil;
    3. import com.belle.yitiansystem.systemmgmt.util.JsonUtil;
    4. import com.yougou.tools.common.utils.SpringContextHolder;
    5. import io.minio.*;
    6. import org.apache.log4j.Logger;
    7. import java.io.File;
    8. import java.io.IOException;
    9. import java.io.InputStream;
    10. import java.util.Map;
    11. import java.util.Properties;
    12. /**
    13. * miniO存储工具类
    14. *
    15. * @author 刘卫
    16. * @site www.yougou.com
    17. * @company 优购科技
    18. * @Date 创建时间:2021-10-25 17:04
    19. */
    20. public class MiniOUtil {
    21. protected final static Logger logger = Logger.getLogger(MiniOUtil.class);
    22. /**
    23. * 桶名称
    24. */
    25. private final static String BUCKET_NAME = "ds-order";
    26. /**
    27. * 初始化 MinioClient
    28. *
    29. * @return
    30. */
    31. private static MinioClient getMinioClient() {
    32. try {
    33. Properties configProperties = SpringContextHolder.getBean("sysconfigproperties");
    34. Map urlMap = JsonUtil.getMapFromJson(JsonUtil.getJSONString(configProperties));
    35. String minioUrl = urlMap.get("minioUrl") + "";
    36. String minioName = urlMap.get("minioName") + "";
    37. String minioPass = urlMap.get("minioPass") + "";
    38. /* String minioUrl = "http://10.234.6.98:9000";
    39. String minioName = "miniotest";
    40. String minioPass = "miniotest";*/
    41. MinioClient minioClient = MinioClient.builder().endpoint(minioUrl)
    42. .credentials(minioName, minioPass)
    43. .build();
    44. return minioClient;
    45. } catch (Exception e) {
    46. logger.error("初始化【miniO】异常:" + e.getMessage(), e);
    47. }
    48. return null;
    49. }
    50. /**
    51. * 上传文件
    52. *
    53. * @param fis
    54. * @param fileName
    55. */
    56. public static void uploadInputStream(InputStream fis, String fileName) {
    57. try {
    58. MinioClient minioClient = getMinioClient();
    59. //已知文件上传
    60. PutObjectArgs objectArgs = PutObjectArgs.builder().object(fileName)
    61. .bucket(BUCKET_NAME)
    62. .stream(fis, fis.available(), -1).build();
    63. minioClient.putObject(objectArgs);
    64. } catch (Exception e) {
    65. logger.error("上传到【miniO】异常:" + e.getMessage(), e);
    66. } finally {
    67. if (null != fis) {
    68. try {
    69. fis.close();
    70. } catch (IOException e) {
    71. logger.error("上传到【miniO】异常->关闭流失败:" + e.getMessage(), e);
    72. }
    73. }
    74. }
    75. }
    76. /**
    77. * 获取对象
    78. *
    79. * @param fileName
    80. * @return
    81. */
    82. public static InputStream getObject(String fileName) {
    83. MinioClient minioClient = getMinioClient();
    84. try {
    85. GetObjectArgs objectArgs = GetObjectArgs.builder()
    86. .bucket(BUCKET_NAME)
    87. .object(fileName)
    88. .build();
    89. InputStream inputStream = minioClient.getObject(objectArgs);
    90. return inputStream;
    91. } catch (Exception e) {
    92. logger.error("【获取miniO对象】异常:" + e.getMessage(), e);
    93. }
    94. return null;
    95. }
    96. /**
    97. * 下载文件 到指定目录
    98. *
    99. * @param sourceFileName
    100. * @param targetFileName
    101. */
    102. public static void downloadFile(String sourceFileName, String targetFileName) {
    103. MinioClient minioClient = getMinioClient();
    104. /*GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(minioBucketName)
    105. .object(uploadFileName).build();*/
    106. DownloadObjectArgs objectArgs = DownloadObjectArgs.builder()
    107. .bucket(BUCKET_NAME)
    108. .object(sourceFileName)
    109. .filename(targetFileName)
    110. .build();
    111. try {
    112. minioClient.downloadObject(objectArgs);
    113. } catch (Exception e) {
    114. logger.error("【下载miniO对象】异常:" + e.getMessage(), e);
    115. }
    116. }
    117. /**
    118. * 判断桶是否存在
    119. *
    120. * @param bucketName
    121. */
    122. public static void existsBucket(String bucketName) {
    123. MinioClient minioClient = getMinioClient();
    124. try {
    125. // 判断桶是否存在
    126. BucketExistsArgs argsExist = BucketExistsArgs.builder()
    127. .bucket(bucketName)
    128. .build();
    129. boolean isExist = minioClient.bucketExists(argsExist);
    130. if (!isExist) {
    131. logger.error("桶不存在");
    132. } else {
    133. logger.error("桶已存在");
    134. }
    135. } catch (Exception e) {
    136. logger.error("【桶不存在,抛异常】异常:" + e.getMessage(), e);
    137. }
    138. }
    139. /**
    140. * 创建桶
    141. *
    142. * @param bucketName
    143. */
    144. public static void createBucket(String bucketName) {
    145. MinioClient minioClient = getMinioClient();
    146. try {
    147. MakeBucketArgs args = MakeBucketArgs.builder()
    148. .bucket(BUCKET_NAME)
    149. .build();
    150. minioClient.makeBucket(args);
    151. logger.info("创建桶成功");
    152. } catch (Exception e) {
    153. logger.error("【创建桶,抛异常】异常:" + e.getMessage(), e);
    154. }
    155. }
    156. /**
    157. * 删除桶
    158. *
    159. * @param bucketName
    160. */
    161. public static void removeBucket(String bucketName) {
    162. MinioClient minioClient = getMinioClient();
    163. try {
    164. RemoveBucketArgs args = RemoveBucketArgs.builder()
    165. .bucket(bucketName)
    166. .build();
    167. minioClient.removeBucket(args);
    168. logger.info("删除桶成功");
    169. } catch (Exception e) {
    170. logger.error("【删除桶,抛异常】异常:" + e.getMessage(), e);
    171. }
    172. }
    173. public static void main(String[] args) throws Exception {
    174. // 创建桶
    175. // createBucket(minioUrl, minioName, minioPass, "ds-order");
    176. // 上传文件测试
    177. /* File file = new File("C:\\Users\\david\\Desktop\\test456.xlsx");
    178. FileInputStream fis = new FileInputStream(file);
    179. String uploadFileName = "test456.xlsx";
    180. uploadInputStream(fis, uploadFileName);*/
    181. // 获取文件测试
    182. InputStream inputStream = getObject("\\20211027\\活动名单_1635318202985.xlsx");
    183. File file2 = new File("C:\\Users\\david\\Desktop\\新文件test456.xlsx");
    184. FileUtil.writeFromStream(inputStream, file2);
    185. }
    186. }