您好,登錄后才能下訂單哦!
這篇“SpringBoot怎么整合Minio文件存儲(chǔ)”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“SpringBoot怎么整合Minio文件存儲(chǔ)”文章吧。
公司的開(kāi)發(fā)框架集成了附件本地存儲(chǔ),阿里云,華為云等,現(xiàn)項(xiàng)目有要求附件存儲(chǔ)與應(yīng)用部署環(huán)境不能是同一臺(tái)服務(wù)器,也不能使用云存儲(chǔ),經(jīng)過(guò)技術(shù)選型后決定框架整合minio,將minio部署在另一臺(tái)服務(wù)器開(kāi)通外網(wǎng)端口即可解決問(wèn)題
下載minio安裝部署包,創(chuàng)建對(duì)應(yīng)配置文件,這里提供一個(gè)整合后的壓縮包
下載地址:http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar
創(chuàng)建minioData文件夾作為文件存儲(chǔ)路徑,解壓安裝包根據(jù)放置路徑修改對(duì)應(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進(jìn)入對(duì)應(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
啟動(dòng)服務(wù)后訪問(wèn) http://127.0.0.1:9999/
用戶名:admin 密碼:abcd@1234 (端口及賬戶密碼都是在run.bat文件中配置的)
進(jìn)入系統(tǒng)創(chuàng)建bucket用于存儲(chǔ)文件(類(lèi)似于阿里云)
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> </dependency>
這里分別配置上傳/下載地址是正式項(xiàng)目可能配置外網(wǎng)端口后,服務(wù)器中不能訪問(wèn)對(duì)應(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 # 存儲(chǔ)文件夾 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; }
getkey方法只是指定對(duì)應(yīng)的自定義存儲(chǔ)路徑
指定content-type是為了瀏覽器能打開(kāi)附件時(shí),圖片和pdf等文件能夠在線瀏覽
不指定默認(rèn)都是stream,打開(kāi)文件統(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代理后是無(wú)效的
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文件存儲(chǔ)”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。