Maison >Java >javaDidacticiel >Comment SpringBoot intègre le stockage de fichiers Minio
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
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)
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> </dependency>
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
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; }
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; }
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; }
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!