springboot整合minio最新版
第一步:查找minio最新依賴,通過maven查詢網站查詢,這搜索框輸入minio,
也可以查看MinIO官網https://docs.min.io/docs/java-client-quickstart-guide.html
如下:
點擊minio進入查看maven依賴,可以看到最新版為8.3.4
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.4</version> </dependency>第二步:(整合到項目中)
1.將依賴添加到新建的springboot項目中,在pom.xml添加
2.配置minio客戶端,不會的話參考minio java sdk文檔,但是這個文檔給的是3.0.10版本的sdk,與新版的不兼容,最新版的還是看github地址
| Endpoint | 對象存儲服務的URL |
| Access Key | Access key就像用戶ID,可以唯一標識你的賬戶 |
| Secret Key | Secret key是你賬戶的密碼 |
默認安裝不指定Access key 和Secret key 的話都是minioadmin, Endpoint則為服務器地址:如我安裝的的端口為1024,那Endpoint就是:http://localhost:1024]
為了方便我們通過bean的方式注入客戶端如下:
yml
spring:# 配置文件上傳大小限制servlet:multipart:max-file-size: 100MBmax-request-size: 100MB# minio 參數配置 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,現在客戶端已注入spring容器中,在使用的時候,只需要獲取就可以了。
第三步: 文件上傳
1.新增一個UploadController控制器用于處理文件上傳,如下:
注意這里的bucket是我提前在minio中新增好的,如果沒有的話,可以自己手動添加,也可以通過代碼添加,具體參考sdk的說明,這里就不多說了。
2.通過postman測試文件上傳(沒有postman的可以看我之前的博客,有相關介紹)
點擊執行后返回ok,執成功,此時通過minio web端看看文件是否上傳成功
看到剛上傳的文件就說明成功了。3.其他說明,如何通過瀏覽器訪問剛上傳的圖片呢,就是通過endpoint服務地址加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");// 設置強制下載不打開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,文件下載下來能夠正常顯示,則說明成功。
總結:
通過以上操作,我們已經完成springboot與minio的整合,可以通過minio sdk實現文件上傳與下載功能。當然還有其他api操作,我就不多介紹了,都是一個思路,調用傳值就可以了,自己嘗試一下,就能get到了。
總結
以上是生活随笔為你收集整理的springboot整合minio最新版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: access开发精要(9)-排序
- 下一篇: linux内核杂记(7)-进程调度(2)