ホームページ > Java > &#&チュートリアル > SpringBoot が Minio ファイル ストレージを統合する方法

SpringBoot が Minio ファイル ストレージを統合する方法

PHPz
リリース: 2023-05-12 22:37:12
転載
1219 人が閲覧しました

背景

同社の開発フレームワークは、添付ファイル ローカル ストレージ、Alibaba Cloud、Huawei Cloud などを統合しています。現在のプロジェクトでは、添付ファイル ストレージとアプリケーション展開環境を同じサーバー上に配置することはできず、クラウド ストレージを同じサーバー上に配置することもできません。テクノロジーの選択後、minio をフレームワークに統合することが決定され、minio を別のサーバーにデプロイし、外部ネットワーク ポートを開くことで問題を解決できます

#Minio のインストールとデプロイメント

minio のインストールおよび展開パッケージをダウンロードし、対応する構成ファイルを作成します。統合された圧縮パッケージは次のとおりです。

ダウンロード アドレス: http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar

minioData フォルダーをファイル ストレージ パスとして作成し、インストール パッケージを解凍し、配置パスに従って対応する構成ファイルを変更します

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 サーバー 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 Cloud と同様)

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート