赞
踩
原文网址:对象存储(OSS)--MinIO--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
说明
本文介绍MinIO这个对象存储服务,包括:安装、前端页面的使用、文件永久有效的设置方法、Java操作MinIO的实例。
很多时候,我们会需要存一些视频、图片、文件,这些数据放在数据库是不合适的,应该将它们放到OSS(对象存储服务),OSS是专门存放这些文件的。
对于OSS,我们可以选用现成的,比如阿里云的OSS,也可以自己进行搭建。如果自己搭建,可以选择MinIO、FastDFS这些开源的对象存储工具,MinIO是一款很好的对象存储(OSS)工具,比FastDFS好用很多。
官网
MinIO 官网文档(英文)
Minio官网文档(中文)
其他网址
Minio快速入门_dingjs520的专栏-CSDN博客
Minio的安装和基础使用_孤城小凡的博客-CSDN博客
其他网址
其他网址
Linux下设置Minio永久访问链接_instanceof_zjl的博客-CSDN博客
MinIO安装以及使用_Map的博客-CSDN博客_minio客户端
Minio设置永久下载链接(2020)_ahoges的博客-CSDN博客_minio永久链接
说明
文件默认有效期是7天,最长可以设置为7天,本处介绍将文件有效期设置为永久的方法。
application.yml
- custom:
- minio:
- url: http://192.168.1.200:11851
- accessKey: minioadmin
- secretKey: minioadmin
- bucketName: interaction-equipment
工具类
- package com.landsky.interaction.common.utils;
-
- import io.minio.*;
- import io.minio.http.Method;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
-
- import javax.annotation.PostConstruct;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
-
- @Slf4j
- @Component
- public class MinioUtil {
- @Value("${custom.minio.url}")
- private String minioUrl;
-
- @Value("${custom.minio.accessKey}")
- private String accessKey;
-
- @Value("${custom.minio.secretKey}")
- private String secretKey;
-
- @Value("${custom.minio.bucketName}")
- private String bucketName;
-
- private MinioClient minioClient;
-
- /**
- * 若文件已经存在,则直接覆盖
- * @param inputStream
- * @param fileName
- * @return 文件的url
- */
- public String uploadFileOverride(InputStream inputStream, String fileName) {
- Map<String, String> headers = new HashMap<>();
- headers.put("Content-Type", "text/plain; charset=utf-8");
-
- PutObjectArgs putObjectArgs;
- try {
- putObjectArgs = PutObjectArgs.builder()
- .bucket(bucketName)
- .object(fileName)
- .stream(inputStream, inputStream.available(), -1)
- .headers(headers)
- .build();
- } catch (IOException e) {
- throw new RuntimeException("Minio:检查输入流是否可用失败", e);
- }
-
- try {
- minioClient.putObject(putObjectArgs);
- } catch (Exception e) {
- throw new RuntimeException("Minio:存放对象失败", e);
- }
-
- GetPresignedObjectUrlArgs urlArgs = GetPresignedObjectUrlArgs.builder()
- .bucket(bucketName)
- .object(fileName)
- .method(Method.GET)
- //.expiry(24, TimeUnit.HOURS)
- .build();
- String url = null;
- try {
- url = minioClient.getPresignedObjectUrl(urlArgs);
- } catch (Exception e) {
- throw new RuntimeException("Minio:获得对象URL失败", e);
- }
- return url;
- }
-
- public void removeFile(String fileName){
- try {
- minioClient.removeObject(
- RemoveObjectArgs.builder().bucket(bucketName).object(fileName).build()
- );
- } catch (Exception e) {
- throw new RuntimeException("Minio:删除对象失败", e);
- }
- }
-
- @PostConstruct
- private void init() {
- minioClient = MinioClient.builder()
- .endpoint(minioUrl)
- .credentials(accessKey, secretKey)
- .build();
- createBucket();
- }
-
- private void createBucket() {
- boolean isExist = false;
- try {
- isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
- } catch (Exception e) {
- log.error("检查Minio桶({})是否存在失败", bucketName);
- e.printStackTrace();
- }
-
- if (!isExist) {
- try {
- minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
- } catch (Exception e) {
- log.error("创建Minio桶({})失败", bucketName);
- e.printStackTrace();
- }
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。