> Java > java지도 시간 > SpringBoot+MinIO는 객체 스토리지를 구현합니다.

SpringBoot+MinIO는 객체 스토리지를 구현합니다.

풀어 주다: 2023-07-20 11:09:27
앞으로
761명이 탐색했습니다.

1. MinIO

MinIO는 Apache License v2.0 오픈 소스 프로토콜을 기반으로 하는 객체 스토리지 서비스입니다. Amazon S3 클라우드 스토리지 서비스 인터페이스와 호환되어 사진, 동영상, 로그 파일, 백업 데이터, 컨테이너/가상 머신 이미지 등 대용량 비정형 데이터를 저장하는 데 매우 적합하며, 객체 파일을 저장할 수 있습니다. kb에서 최대 5T까지 여러 범위에 이르는 모든 크기.

MinIO는 NodeJS, Redis 또는 MySQL과 같은 다른 애플리케이션과 쉽게 결합할 수 있는 매우 가벼운 서비스입니다.

2. MinIO 설치 및 시작

MinIO는 별도의 서버이므로 별도로 배포해야 하므로 Windows 시스템에서 MinIO를 사용하는 방법은 다음 블로그를 확인하시기 바랍니다.

  • https://blog.csdn.net/Angel_asp/article/details/128544612

Three, pom.xml

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.16</version>
</dependency>
<!-- SpringBoot Web容器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.3.4</version>
</dependency>
로그인 후 복사

Four, applicatin.properties(구성 파일)

레이

5. Java 비즈니스 클래스 작성

minio에 포함된 메서드는 버킷 존재 여부 확인, 버킷 생성, 파일 업로드, 파일 읽기, 파일 다운로드, 파일 삭제 및 기타 작업입니다.

1. :

# 设置单个文件大小
spring.servlet.multipart.max-file-size= 50MB
#minio文件服务器配置
s3.url=http://localhost:9000
s3.accessKey=admin
s3.secretKey=admin123
s3.bucketName=test
로그인 후 복사

2. minio 구성 클래스:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
 
/**
 * @Author yang
 * @Date 2023/1/3 14:00
 * @Version 1.0
 */
@Data
@Component
@ConfigurationProperties(prefix = "s3")
public class StorageProperty {
    private String url;
    private String accessKey;
    private String secretKey;
//    private long callTimeOut = 60000;
//    private long readTimeOut = 300000;
}
로그인 후 복사

6. MinIoController

파일 업로드, 파일 읽기, 파일 다운로드 및 파일 삭제를 위한 인터페이스는 다음과 같습니다.

/**
 * @Author yangb
 * @Date 2022/11/27 15:55
 * @Version 1.0
 */
@RestController
@RequestMapping("/minio")
public class MinIoController extends BaseController {
 
    MinioUtil minioUtil = new MinioUtil();
 
    /**
     * 上传文件
     * @param file
     * @return
     */
    @PostMapping("/uploadFile")
    public AjaxResult uploadFile(@RequestBody MultipartFile file) {
        MinioClient minioClient = MinioClientConfig.getMinioClient();
        if (minioClient == null) {
            return AjaxResult.error("连接MinIO服务器失败", null);
        }
        ResultEntity<Map<String, Object>> result = minioUtil.minioUpload(file, "", "data-enpower");
        if (result.getCode() == 0) {
            return AjaxResult.success("上传成功");
        } else {
            return AjaxResult.error("上传错误!!!");
        }
    }
 
    /**
     * 获取文件预览地址
     * @param fileName
     * @return
     */
    @RequestMapping("/getRedFile")
    public AjaxResult getRedFile(@RequestBody String fileName) {
        MinioClient minioClient = MinioClientConfig.getMinioClient();
        if (minioClient == null) {
            return AjaxResult.error("连接MinIO服务器失败", null);
        }
        String url = minioUtil.getPreviewFileUrl("data-enpower",fileName);
        return AjaxResult.success(url);
    }
 
    /**
     * 下载文件
     * @param fileName
     * @param response
     * @return
     */
    @RequestMapping("/downloadFile")
    public String downloadFile(@RequestParam String fileName, HttpServletResponse response) {
        MinioClient minioClient = MinioClientConfig.getMinioClient();
        if (minioClient == null) {
            return "连接MinIO服务器失败";
        }
        return minioUtil.downloadFile("data-enpower",fileName,response) != null ? "下载成功" : "下载失败";
    }
 
    /**
     * 删除文件
     *
     * @param fileName 文件路径
     * @return
     */
    @PostMapping("/deleteFile")
    public String deleteFile(String fileName) {
        MinioClient minioClient = MinioClientConfig.getMinioClient();
        if (minioClient == null) {
            return "连接MinIO服务器失败";
        }
        boolean flag = minioUtil.deleteFile("data-enpower",fileName);
        return flag == true ? "删除成功" : "删除失败";
    }
 
 
}
로그인 후 복사

七、调试结果

1、 文件上传

SpringBoot+MinIO는 객체 스토리지를 구현합니다.

minio上的文件

SpringBoot+MinIO는 객체 스토리지를 구현합니다.

2、 文件下载

SpringBoot+MinIO는 객체 스토리지를 구현합니다.

3、 文件删除

SpringBoot+MinIO는 객체 스토리지를 구현합니다.

我们在minio上看看文件是否已删除

SpringBoot+MinIO는 객체 스토리지를 구현합니다.



위 내용은 SpringBoot+MinIO는 객체 스토리지를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:Java学习指南
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿