当前位置:   article > 正文

对象存储(OSS)--MinIO--使用/教程/实例_开源oss

开源oss

原文网址:对象存储(OSS)--MinIO--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍MinIO这个对象存储服务,包括:安装、前端页面的使用、文件永久有效的设置方法、Java操作MinIO的实例。

        很多时候,我们会需要存一些视频、图片、文件,这些数据放在数据库是不合适的,应该将它们放到OSS(对象存储服务),OSS是专门存放这些文件的。

        对于OSS,我们可以选用现成的,比如阿里云的OSS,也可以自己进行搭建。如果自己搭建,可以选择MinIO、FastDFS这些开源的对象存储工具,MinIO是一款很好的对象存储(OSS)工具,比FastDFS好用很多。

官网

MinIO 官网文档(英文)

Minio官网文档(中文)

安装

其他网址

Minio快速入门_dingjs520的专栏-CSDN博客 
Minio的安装和基础使用_孤城小凡的博客-CSDN博客

使用

其他网址

Minio的安装和基础使用_孤城小凡的博客-CSDN博客

永久有效

其他网址

Linux下设置Minio永久访问链接_instanceof_zjl的博客-CSDN博客
MinIO安装以及使用_Map的博客-CSDN博客_minio客户端
Minio设置永久下载链接(2020)_ahoges的博客-CSDN博客_minio永久链接

说明

        文件默认有效期是7天,最长可以设置为7天,本处介绍将文件有效期设置为永久的方法。

Java实例

application.yml

  1. custom:
  2. minio:
  3. url: http://192.168.1.200:11851
  4. accessKey: minioadmin
  5. secretKey: minioadmin
  6. bucketName: interaction-equipment

工具类

  1. package com.landsky.interaction.common.utils;
  2. import io.minio.*;
  3. import io.minio.http.Method;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.beans.factory.annotation.Value;
  6. import org.springframework.stereotype.Component;
  7. import javax.annotation.PostConstruct;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.util.HashMap;
  11. import java.util.Map;
  12. import java.util.concurrent.TimeUnit;
  13. @Slf4j
  14. @Component
  15. public class MinioUtil {
  16. @Value("${custom.minio.url}")
  17. private String minioUrl;
  18. @Value("${custom.minio.accessKey}")
  19. private String accessKey;
  20. @Value("${custom.minio.secretKey}")
  21. private String secretKey;
  22. @Value("${custom.minio.bucketName}")
  23. private String bucketName;
  24. private MinioClient minioClient;
  25. /**
  26. * 若文件已经存在,则直接覆盖
  27. * @param inputStream
  28. * @param fileName
  29. * @return 文件的url
  30. */
  31. public String uploadFileOverride(InputStream inputStream, String fileName) {
  32. Map<String, String> headers = new HashMap<>();
  33. headers.put("Content-Type", "text/plain; charset=utf-8");
  34. PutObjectArgs putObjectArgs;
  35. try {
  36. putObjectArgs = PutObjectArgs.builder()
  37. .bucket(bucketName)
  38. .object(fileName)
  39. .stream(inputStream, inputStream.available(), -1)
  40. .headers(headers)
  41. .build();
  42. } catch (IOException e) {
  43. throw new RuntimeException("Minio:检查输入流是否可用失败", e);
  44. }
  45. try {
  46. minioClient.putObject(putObjectArgs);
  47. } catch (Exception e) {
  48. throw new RuntimeException("Minio:存放对象失败", e);
  49. }
  50. GetPresignedObjectUrlArgs urlArgs = GetPresignedObjectUrlArgs.builder()
  51. .bucket(bucketName)
  52. .object(fileName)
  53. .method(Method.GET)
  54. //.expiry(24, TimeUnit.HOURS)
  55. .build();
  56. String url = null;
  57. try {
  58. url = minioClient.getPresignedObjectUrl(urlArgs);
  59. } catch (Exception e) {
  60. throw new RuntimeException("Minio:获得对象URL失败", e);
  61. }
  62. return url;
  63. }
  64. public void removeFile(String fileName){
  65. try {
  66. minioClient.removeObject(
  67. RemoveObjectArgs.builder().bucket(bucketName).object(fileName).build()
  68. );
  69. } catch (Exception e) {
  70. throw new RuntimeException("Minio:删除对象失败", e);
  71. }
  72. }
  73. @PostConstruct
  74. private void init() {
  75. minioClient = MinioClient.builder()
  76. .endpoint(minioUrl)
  77. .credentials(accessKey, secretKey)
  78. .build();
  79. createBucket();
  80. }
  81. private void createBucket() {
  82. boolean isExist = false;
  83. try {
  84. isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
  85. } catch (Exception e) {
  86. log.error("检查Minio桶({})是否存在失败", bucketName);
  87. e.printStackTrace();
  88. }
  89. if (!isExist) {
  90. try {
  91. minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
  92. } catch (Exception e) {
  93. log.error("创建Minio桶({})失败", bucketName);
  94. e.printStackTrace();
  95. }
  96. }
  97. }
  98. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号