>Java >java지도 시간 >SpringBoot가 Minio 파일 저장소를 통합하는 방법

SpringBoot가 Minio 파일 저장소를 통합하는 방법

PHPz
PHPz앞으로
2023-05-12 22:37:121219검색

Background

회사의 개발 프레임워크는 첨부 로컬 저장소, Alibaba Cloud, Huawei Cloud 등을 통합합니다. 현재 프로젝트에서는 첨부 저장소와 애플리케이션 배포 환경이 동일한 서버에 있을 수 없으며 프레임워크를 사용할 수 없습니다. 기술 선택 후 결정됨 minio를 통합하고 다른 서버에 minio를 배포한 후 외부 네트워크 포트를 열어 문제 해결

Minio 설치 및 배포

minio 설치 및 배포 패키지를 다운로드하고 해당 구성 파일을 생성합니다. 여기에 통합 압축 파일이 있습니다. package

다운로드 주소: http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar

minioData 폴더를 파일 저장 경로로 생성하고 설치 패키지의 압축을 풀고 배치에 따라 해당 구성 파일 파일을 수정합니다. path

minio-service.xml 및 run.bat

<service>
  <id>minio</id>
  <name>MinIO Service</name>
  <description>MinIO is a High Performance Object Storage</description>
  <logpath>D:\minio\logs</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
  <executable>D:\minio\run.bat</executable>
</service>
set MINIO_ACCESS_KEY=admin
set MINIO_SECRET_KEY=abcd@1234
minio.exe server -address :9999 D:\minioData

배포 패키지 압축 해제 후 cmd에 해당 압축 해제 경로를 입력하고 minio.exe server D:minioData 명령을 입력한 후 cmd 명령을 종료하세요

서비스 설치 도구를 선택하여 서비스를 설치하려면 minio-service.exe

windows 서비스 설치 도구 다운로드 주소 :http://xiazai.jb51.net/202204/yuanma/windowsfuwu_jb51.rar

서비스를 시작한 후 http를 방문하세요. //127.0.0.1:9999/

사용자 이름: admin 비밀번호: abcd@1234 (포트 및 계정 비밀번호는 모두 run.bat 파일에 구성되어 있습니다.)

시스템에 들어가 파일 저장용 버킷을 생성합니다(Alibaba와 유사) 클라우드)

SpringBoot가 Minio 파일 저장소를 통합하는 방법

pom 파일 구성 --h3>

  <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>7.1.0</version>
        </dependency>

yml 파일 구성

여기서 별도로 구성하세요. 업로드/다운로드 주소는 공식 프로젝트입니다. 외부 네트워크 포트 구성 후 해당 외부 네트워크 포트입니다. 업로드는 내부 네트워크를 통해, 다운로드는 외부 네트워크를 통해 진행됩니다

#minio配置
  # 上传地址
  minio_uploadurl: http://192.168.1.42:9999/
  # 下载地址
  minio_downloadurl: http://192.168.1.42:9999/
  # 账户
  minio_accesskey: admin
  # 密码
  minio_secrectkey: abcd@1234
  # 存储文件夹
  minio_bucknetname: xxx

Minio 도구 클래스

클라이언트 초기화

public MinioClient InitMinio() {
        MinioClient minioClient = MinioClient.builder().
        endpoint(frameConfig.getMinio_uploadurl()).       		        credentials(frameConfig.getMinio_accesskey(),frameConfig.getMinio_secrectkey()).build();
        try{
            boolean isExist = minioClient.bucketExists(frameConfig.getMinio_bucknetname());
            if (!isExist) {
                minioClient.makeBucket(frameConfig.getMinio_bucknetname());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return minioClient;
    }

파일 업로드

getkey 메소드는 해당 사용자 정의 저장 경로만 지정합니다

콘텐츠 유형을 지정하면 브라우저에서 첨부 파일을 열 수 있을 때 그림과 PDF 파일을 온라인으로 검색할 수 있습니다

지정하지 않으면 기본값은 스트림이고 파일 열기는 다운로드를 위해 통합됩니다

 public boolean uploadMinioFile(InputStream stream, AttachmentDO attachmentDO,String contentType){
        boolean result = true;
        try{
            MinioClient minioClient = InitMinio();
            String bucketName =frameConfig.getMinio_bucknetname();
            PutObjectOptions option = new PutObjectOptions(stream.available(), -1);
            option.setContentType(contentType);
            minioClient.putObject(bucketName,getKey(attachmentDO),stream,option);
        }catch (Exception e){
            logger.error("Minio上传文件失败:" + e.getMessage());
            result = false;
        }
        return result;
    }

파일 다운로드

이어야 합니다 생성된 파일 다운로드 주소는 MinioClient에 지정된 서버 주소에 바인딩되어 있습니다. nginx 프록시

 public  String readMinioCommonFile(AttachmentDO attachmentDO){
        String fileurl = "";
        try{
            MinioClient minioClient = InitMinio();
            String bucketName =frameConfig.getMinio_bucknetname();
            return minioClient.presignedGetObject(bucketName, getKey(attachmentDO));
        }catch (Exception e){
            logger.error("Minio读取文件失败:" + e.getMessage());
        }
        return fileurl;
    }

파일 삭제

 public  boolean deleteMinioFile(AttachmentDO attachmentDO){
        boolean result = true;
        try{
            MinioClient minioClient = InitMinio();
            String bucketName =frameConfig.getMinio_bucknetname();
            minioClient.removeObject(bucketName,getKey(attachmentDO));
        }catch (Exception e){
            logger.error("Minio删除文件失败:" + e.getMessage());
            result = false;
        }
        return result;
    }
를 사용한 후에는 유효하지 않습니다.

위 내용은 SpringBoot가 Minio 파일 저장소를 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제