当前位置:   article > 正文

springboot中minio的使用以及常用工具类,上传下载删除判断是否存在_minio怎么判断文件对象是否存在

minio怎么判断文件对象是否存在

1、导入依赖

  1. <dependency>
  2. <groupId>io.minio</groupId>
  3. <artifactId>minio</artifactId>
  4. <version>8.2.1</version>
  5. </dependency>

2、配置文件yml

  1. minio:
  2. bucket1:
  3. endpoint: 192.168.10.85
  4. port: 8855
  5. accessKey: minioadmin
  6. secretKey: minioadmin
  7. bucket: bucket1
  8. publicEndpoint: http://192.168.10.85:8855

3、写Minio配置类

  1. @Configuration
  2. public class MinoConfig {
  3. @Value("${minio.bucket1.endpoint}")
  4. private String endpoint;
  5. @Value("${minio.bucket1.port}")
  6. private int port;
  7. @Value("${minio.bucket1.accessKey}")
  8. private String accessKey;
  9. @Value("${minio.bucket1.secretKey}")
  10. private String secretKey;
  11. @Value("${minio.bucket1.bucket}")
  12. private String bucket;
  13. @Value("${minio.bucket1.publicEndpoint}")
  14. private String publicEndpoint;
  15. @Bean(name = "IMinioClient")
  16. public MinioClient minioClient() {
  17. return MinioClient.builder()
  18. .endpoint(endpoint,port,false)
  19. .credentials(accessKey, secretKey)
  20. .build();
  21. }
  22. }

4、常用工具类

  1. @Component
  2. @Slf4j
  3. public class MinioUtil {
  4. private MinioClient minioClient;
  5. @Autowired
  6. public void setMinioClient(@Qualifier("IMinioClient") MinioClient minioClient){
  7. this.minioClient = minioClient;
  8. }
  9. @Value("${minio.bucket1.bucket}")
  10. private String defaultBucketName;
  11. /**
  12. * 上传文件到MinIO桶
  13. *
  14. * @param objectName 存储对象的名称
  15. * @param inputStream 文件输入流
  16. * @param contentType 文件类型
  17. */
  18. public void uploadFile(String objectName, InputStream inputStream, String contentType) {
  19. this.uploadFile(defaultBucketName, objectName, inputStream, contentType);
  20. }
  21. /**
  22. * 上传文件到MinIO桶
  23. *
  24. * @param bucketName MinIO桶的名称
  25. * @param objectName 存储对象的名称
  26. * @param inputStream 文件输入流
  27. * @param contentType 文件类型
  28. */
  29. public void uploadFile(String bucketName, String objectName, InputStream inputStream, String contentType) {
  30. try {
  31. boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
  32. if (!isExist) {
  33. minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
  34. }
  35. PutObjectArgs putObjectArgs = PutObjectArgs.builder()
  36. .bucket(bucketName)
  37. .object(objectName)
  38. .contentType(contentType)
  39. .stream(inputStream, inputStream.available(), -1)
  40. .build();
  41. minioClient.putObject(putObjectArgs);
  42. } catch (MinioException | IOException | InvalidKeyException | NoSuchAlgorithmException e) {
  43. handleMinioException(e);
  44. }
  45. }
  46. /**
  47. * 从MinIO桶下载文件
  48. *
  49. * @param objectName 存储对象的名称
  50. * @return 文件输入流
  51. */
  52. public InputStream downloadFile(String objectName) {
  53. return this.downloadFile(defaultBucketName, objectName);
  54. }
  55. /**
  56. * 从MinIO桶下载文件
  57. *
  58. * @param bucketName MinIO桶的名称
  59. * @param objectName 存储对象的名称
  60. * @return 文件输入流
  61. */
  62. public InputStream downloadFile(String bucketName, String objectName) {
  63. try {
  64. GetObjectArgs getObjectArgs = GetObjectArgs.builder()
  65. .bucket(bucketName)
  66. .object(objectName)
  67. .build();
  68. // 读取文件内容到字节数组
  69. try (InputStream inputStream = minioClient.getObject(getObjectArgs)) {
  70. byte[] byteArray = IoUtil.readBytes(inputStream);
  71. return new ByteArrayInputStream(byteArray);
  72. }
  73. } catch (MinioException | IOException | InvalidKeyException | NoSuchAlgorithmException e) {
  74. handleMinioException(e);
  75. return null;
  76. }
  77. }
  78. /**
  79. * 从MinIO桶删除文件
  80. *
  81. * @param objectName 存储对象的名称
  82. */
  83. public void deleteFile(String objectName) {
  84. this.deleteFile(defaultBucketName, objectName);
  85. }
  86. /**
  87. * 从MinIO桶删除文件
  88. *
  89. * @param bucketName MinIO桶的名称
  90. * @param objectName 存储对象的名称
  91. */
  92. public void deleteFile(String bucketName, String objectName) {
  93. try {
  94. RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder()
  95. .bucket(bucketName)
  96. .object(objectName)
  97. .build();
  98. minioClient.removeObject(removeObjectArgs);
  99. } catch (MinioException | IOException | InvalidKeyException | NoSuchAlgorithmException e) {
  100. handleMinioException(e);
  101. }
  102. }
  103. /**
  104. * 批量删除MinIO桶中的文件
  105. *
  106. * @param objectNames 存储对象的名称列表
  107. */
  108. public void deleteFiles(List<String> objectNames) {
  109. this.deleteFiles(defaultBucketName, objectNames);
  110. }
  111. /**
  112. * 批量删除MinIO桶中的文件
  113. *
  114. * @param bucketName MinIO桶的名称
  115. * @param objectNames 存储对象的名称列表
  116. */
  117. public void deleteFiles(String bucketName, List<String> objectNames) {
  118. try {
  119. List<DeleteObject> objectsToDelete = new ArrayList<>();
  120. for (String objectName : objectNames) {
  121. objectsToDelete.add(new DeleteObject(objectName));
  122. }
  123. RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder()
  124. .bucket(bucketName)
  125. .objects(objectsToDelete)
  126. .build();
  127. minioClient.removeObjects(removeObjectsArgs);
  128. } catch (Exception e) {
  129. handleMinioException(e);
  130. }
  131. }
  132. /**
  133. * 判断MinIO桶中的对象是否存在
  134. *
  135. * @param objectName 存储对象的名称
  136. * @return 文件是否存在
  137. */
  138. public boolean doesObjectExist(String objectName) {
  139. return this.doesObjectExist(defaultBucketName, objectName);
  140. }
  141. /**
  142. * 判断MinIO桶中的对象是否存在
  143. *
  144. * @param bucketName MinIO桶的名称
  145. * @param objectName 存储对象的名称
  146. * @return 文件是否存在
  147. */
  148. public boolean doesObjectExist(String bucketName, String objectName) {
  149. boolean exist = true;
  150. try {
  151. minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(objectName).build());
  152. } catch (Exception e) {
  153. exist = false;
  154. }
  155. return exist;
  156. }
  157. /**
  158. * 处理MinIO异常
  159. *
  160. * @param e MinIO异常
  161. */
  162. private void handleMinioException(Exception e) {
  163. log.error("minio操作出现异常,异常为:{}", e.toString());
  164. throw new RuntimeException(e);
  165. }
  166. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/110926
推荐阅读
相关标签
  

闽ICP备14008679号