Rumah  >  Artikel  >  Java  >  Bagaimana SpringBoot menyepadukan storan fail Minio

Bagaimana SpringBoot menyepadukan storan fail Minio

PHPz
PHPzke hadapan
2023-05-12 22:37:121160semak imbas

Latar Belakang

Rangka kerja pembangunan syarikat menyepadukan storan tempatan lampiran, Alibaba Cloud, Huawei Cloud, dll. Projek semasa memerlukan storan lampiran dan persekitaran penggunaan aplikasi tidak boleh berada pada pelayan yang sama, begitu juga storan awan digunakan. Selepas pemilihan teknologi, putuskan untuk menyepadukan minio ke dalam rangka kerja pada pelayan lain dan buka port rangkaian luaran untuk menyelesaikan masalah

Pemasangan dan penggunaan minio

Muat turun pemasangan minio. dan pakej penempatan dan cipta fail konfigurasi yang sepadan , pakej termampat bersepadu disediakan di sini

Alamat muat turun: http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar

Buat folder minioData sebagai laluan penyimpanan fail, Nyahzip pakej pemasangan dan ubah suai fail fail konfigurasi yang sepadan

minio-service.xml dan 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>
rrree

mengikut laluan peletakan pakej penempatan, cmd memasuki laluan penyahmampatan yang sepadan dan memasuki arahan pelayan minio.exe D :minioData Selepas permulaan, tutup arahan cmd

Gunakan alat pemasangan perkhidmatan untuk memasang perkhidmatan, pilih minio-service.exe

alamat muat turun alat pemasangan perkhidmatan windows: http://xiazai.jb51.net/202204 /yuanma/windowsfuwu_jb51.rar

Selepas memulakan perkhidmatan, lawati http://127.0.0.1: 9999/

Nama pengguna: admin Kata laluan: abcd@1234 (Kata laluan port dan akaun kedua-duanya dalam fail .bat dijalankan)

Masukkan sistem untuk mencipta baldi untuk menyimpan fail (serupa dengan Alibaba Cloud)

Bagaimana SpringBoot menyepadukan storan fail Minio

Konfigurasikan fail pom--h3>

set MINIO_ACCESS_KEY=admin
set MINIO_SECRET_KEY=abcd@1234
minio.exe server -address :9999 D:\minioData

Konfigurasikan fail yml

Alamat muat naik/muat turun yang dikonfigurasikan di sini ialah alamat rasmi projek. Ada kemungkinan bahawa selepas mengkonfigurasi port rangkaian luaran, port rangkaian luaran yang sepadan tidak boleh diakses dalam pelayan Muat naik pergi ke rangkaian dalaman dan muat turun pergi ke luar Net

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

Minio tool class

Memulakan klien

#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

Muat naik fail

Kaedah getkey hanya menentukan laluan storan tersuai yang sepadan

Menentukan jenis kandungan adalah supaya apabila penyemak imbas boleh dibuka lampiran, fail seperti gambar dan PDF boleh dilayari dalam talian

Jika tidak dinyatakan, lalai adalah strim dan membuka fail disatukan untuk dimuat turun

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;
    }

Muat turun fail

Ia harus diperhatikan bahawa alamat muat turun fail yang dijana terikat pada alamat pelayan yang dinyatakan dalam MinioClient, dan tidak sah selepas menggunakan proksi nginx

 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;
    }

Padam fail

 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;
    }

Atas ialah kandungan terperinci Bagaimana SpringBoot menyepadukan storan fail Minio. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam