Maison  >  Article  >  Java  >  Comment SpringBoot intègre le stockage de fichiers Minio

Comment SpringBoot intègre le stockage de fichiers Minio

PHPz
PHPzavant
2023-05-12 22:37:121160parcourir

Contexte

Le cadre de développement de l'entreprise intègre le stockage local des pièces jointes, Alibaba Cloud, Huawei Cloud, etc. Le projet actuel exige que l'environnement de stockage des pièces jointes et de déploiement d'applications ne puisse pas être sur le même serveur, et que le stockage cloud ne puisse pas non plus être utilisé. déterminé après sélection technique. Intégrez minio, déployez minio sur un autre serveur et ouvrez le port réseau externe pour résoudre le problème

Installation et déploiement de Minio

Téléchargez le package d'installation et de déploiement de minio, créez le fichier de configuration correspondant, voici un compressé intégré. package

Adresse de téléchargement : http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar

Créez le dossier minioData comme chemin de stockage des fichiers, décompressez le package d'installation et modifiez les fichiers de configuration correspondants en fonction de l'emplacement path

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

Après avoir décompressé le package de déploiement, entrez le chemin de décompression cmd correspondant, entrez la commande minio.exe server D:minioData Après l'initialisation, fermez la commande cmd

Utilisez le. outil d'installation du service pour installer le service, sélectionnez minio-service.exe

Adresse de téléchargement de l'outil d'installation du service Windows :http://xiazai.jb51.net/202204/yuanma/windowsfuwu_jb51.rar

Après avoir démarré le service, visitez http : //127.0.0.1:9999/

Nom d'utilisateur : admin Mot de passe : abcd@1234 (port et mot de passe du compte Ils sont tous configurés dans le fichier run.bat)

Entrez dans le système pour créer un compartiment pour stocker les fichiers (similaire à Alibaba Cloud)

Comment SpringBoot intègre le stockage de fichiers Minio

Configurez le fichier pom --h3>

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

Configurez le fichier yml

Configurez-le séparément ici L'adresse de téléchargement/téléchargement est le projet officiel Après avoir configuré le port réseau externe, le port réseau externe correspondant. n'est pas accessible sur le serveur. Le téléchargement s'effectue via le réseau interne et le téléchargement s'effectue via le réseau externe

#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

Classe d'outils Minio

Initialiser le client

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

Télécharger des fichiers

La méthode getkey spécifie uniquement le chemin de stockage personnalisé correspondant.

Spécifier le type de contenu permet de parcourir les images et les fichiers PDF en ligne lorsque le navigateur peut ouvrir des pièces jointes

S'il n'est pas spécifié, la valeur par défaut est flux et l'ouverture des fichiers est unifiée en tant que téléchargement

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

Télécharger des fichiers

Il Il convient de noter que l'adresse de téléchargement du fichier généré est liée à l'adresse du serveur spécifiée dans MinioClient. Elle n'est pas valide après avoir utilisé le proxy 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;
    }

Supprimez le fichier

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer