SpringBoot中整合Minio文件存儲的安裝部署過程
背景
公司的開發(fā)框架集成了附件本地存儲,阿里云,華為云等,現(xiàn)項目有要求附件存儲與應(yīng)用部署環(huán)境不能是同一臺服務(wù)器,也不能使用云存儲,經(jīng)過技術(shù)選型后決定框架整合minio,將minio部署在另一臺服務(wù)器開通外網(wǎng)端口即可解決問題
Minio安裝部署
下載minio安裝部署包,創(chuàng)建對應(yīng)配置文件,這里提供一個整合后的壓縮包
下載地址:http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar
創(chuàng)建minioData文件夾作為文件存儲路徑,解壓安裝包根據(jù)放置路徑修改對應(yīng)配置文件文件
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進入對應(yīng)解壓路徑,輸入命令minio.exe server D:\minioData 初始化后關(guān)閉cmd命令
使用服務(wù)安裝工具安裝服務(wù),選擇minio-service.exe
windows服務(wù)安裝工具下載地址:http://xiazai.jb51.net/202204/yuanma/windowsfuwu_jb51.rar
啟動服務(wù)后訪問 http://127.0.0.1:9999/
用戶名:admin 密碼:abcd@1234 (端口及賬戶密碼都是在run.bat文件中配置的)
進入系統(tǒng)創(chuàng)建bucket用于存儲文件(類似于阿里云)

配置pom文件
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.0</version>
</dependency>配置yml文件
這里分別配置上傳/下載地址是正式項目可能配置外網(wǎng)端口后,服務(wù)器中不能訪問對應(yīng)的外網(wǎng)端口,上傳走內(nèi)網(wǎng),下載走外網(wǎng)
#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工具類
初始化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;
}上傳文件
getkey方法只是指定對應(yīng)的自定義存儲路徑
指定content-type是為了瀏覽器能打開附件時,圖片和pdf等文件能夠在線瀏覽
不指定默認(rèn)都是stream,打開文件統(tǒng)一為下載
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中指定的服務(wù)器地址綁定的,使用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;
}到此這篇關(guān)于SpringBoot中整合Minio文件存儲的安裝部署過程的文章就介紹到這了,更多相關(guān)SpringBoot整合Minio文件存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?深入理解創(chuàng)建型設(shè)計模式之建造者模式
建造者(Builder)模式和工廠模式的關(guān)注點不同:建造者模式注重零部件的組裝過程,而工廠方法模式更注重零部件的創(chuàng)建過程,但兩者可以結(jié)合使用2022-02-02
ConcurrentHashMap線程安全及實現(xiàn)原理實例解析
這篇文章主要介紹了ConcurrentHashMap線程安全及實現(xiàn)原理實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
springmvc開啟異步請求報錯Java code using the Ser
這篇文章主要為大家介紹了springmvc開啟異步請求報錯Java code using the Servlet API or解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-02-02

