日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Springboot整合minio

發(fā)布時(shí)間:2023/12/16 javascript 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Springboot整合minio 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一步:查找 minio 最新依賴,通過 maven 查詢網(wǎng)站查詢, 這搜索框輸入 minio, 也可以查看 MinIO 官網(wǎng) https://docs.min.io/docs/java-client-quickstart-guide.html如下:

點(diǎn)擊 minio 進(jìn)入查看 maven 依賴,可以看到最新版為 8.3.4

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

第二步:(整合到項(xiàng)目中)

1. 將依賴添加到新建的 springboot 項(xiàng)目中, 在 pom.xml 添加 2. 配置 minio 客戶端, 不會(huì)的話參考 minio java sdk 文檔, 但是這個(gè)文檔給的是 3.0.10 版本的 sdk,與新版的不兼容,最新版的還是看 github 地址

參數(shù)說明
Endpoint對(duì)象存儲(chǔ)服務(wù)的 URL
Access KeyAccess key 就像用戶 ID,可以唯一標(biāo)識(shí)你的賬戶
Secret KeySecret key 是你賬戶的密碼

默認(rèn)安裝不指定 Access key 和 Secret key 的話都是 minioadmin, Endpoint 則為服務(wù)器地址:如我安裝的的端口為 1024,那 Endpoint 就是: http://localhost:1024] 為了方便我們通過 bean 的方式注入客戶端如下:

yml

spring:#?配置文件上傳大小限制servlet:multipart:max-file-size:?100MBmax-request-size:?100MB#?minio?參數(shù)配置 minio:endpoint:?http://localhost:1024accessKey:?minioadminsecretKey:?minioadmin@Configuration public?class?MinIoClientConfig?{@Value("${minio.endpoint}")private?String?endpoint;@Value("${minio.accessKey}")private?String?accessKey;@Value("${minio.secretKey}")private?String?secretKey;/***?注入minio?客戶端*?@return*/@Beanpublic?MinioClient?minioClient(){return?MinioClient.builder().endpoint(endpoint).credentials(accessKey,?secretKey).build();} }

ok, 現(xiàn)在客戶端已注入 spring 容器中,在使用的時(shí)候,只需要獲取就可以了。

第三步: 文件上傳 1. 新增一個(gè) UploadController 控制器用于處理文件上傳,如下:

@RestController public?class?UploadController?{@Resourceprivate?MinioClient?minioClient;/***?文件上傳*?@param?file*?@return*/@PostMapping("/upload")public?String?upload(MultipartFile?file){try?{PutObjectArgs?objectArgs?=?PutObjectArgs.builder().object(file.getOriginalFilename()).bucket("test").contentType(file.getContentType()).stream(file.getInputStream(),file.getSize(),-1).build();minioClient.putObject(objectArgs);return?"ok";}?catch?(Exception?e)?{e.printStackTrace();return?e.getMessage();}} }

注意這里的 bucket 是我提前在 minio 中新增好的,如果沒有的話,可以自己手動(dòng)添加,也可以通過代碼添加, 具體參考 sdk 的說明, 這里就不多說了。

2. 通過 postman 測(cè)試文件上傳(沒有 postman 的可以看我之前的博客,有相關(guān)介紹)

點(diǎn)擊執(zhí)行后返回 ok, 執(zhí)成功, 此時(shí)通過 minio web 端看看文件是否上傳成功

看到剛上傳的文件就說明成功了。3. 其他說明, 如何通過瀏覽器訪問剛上傳的圖片呢,就是通過 endpoint 服務(wù)地址加 bucket 名稱加圖片的名稱,在本例子訪問路徑則為:5b01ca40273bcf53f4e6d84c0c595642.gif

第四步: 文件下載

在 UploadController 控制其中新增 download 方法, 如下:

/***?下載文件*?@param?filename*/@GetMapping("/download/{filename}")public?void?download(@PathVariable?String?filename,?HttpServletResponse?res){GetObjectArgs?objectArgs?=?GetObjectArgs.builder().bucket("test").object(filename).build();try?(GetObjectResponse?response?=?minioClient.getObject(objectArgs)){byte[]?buf?=?new?byte[1024];int?len;try?(FastByteArrayOutputStream?os?=?new?FastByteArrayOutputStream()){while?((len=response.read(buf))!=-1){os.write(buf,0,len);}os.flush();byte[]?bytes?=?os.toByteArray();res.setCharacterEncoding("utf-8");res.setContentType("application/force-download");//?設(shè)置強(qiáng)制下載不打開res.addHeader("Content-Disposition",?"attachment;fileName="?+?filename);try?(?ServletOutputStream?stream?=?res.getOutputStream()){stream.write(bytes);stream.flush();}}}?catch?(Exception?e)?{e.printStackTrace();}}

通過訪問下載地址:http://localhost:8421/download/5b01ca40273bcf53f4e6d84c0c595642.gif, 文件下載下來能夠正常顯示,則說明成功。

總結(jié): 通過以上操作,我們已經(jīng)完成 springboot 與 minio 的整合,可以通過 minio sdk 實(shí)現(xiàn)文件上傳與下載功能。當(dāng)然還有其他 api 操作,我就不多介紹了,都是一個(gè)思路,調(diào)用傳值就可以了,自己嘗試一下,就能 get 到了。


作者:Archie_java

來源鏈接:

https://blog.csdn.net/qq_43842093/article/details/121873566

總結(jié)

以上是生活随笔為你收集整理的Springboot整合minio的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。