Spring Boot集成MinIO進(jìn)行文件存儲和管理的詳細(xì)步驟
1. 安裝MinIO
使用Docker部署MinIO
拉取MinIO鏡像:
docker pull minio/minio
這將從Docker Hub中獲取最新的MinIO鏡像。
創(chuàng)建目錄:
mkdir -p /home/minio/config mkdir -p /home/minio/data
這些目錄將用于持久化MinIO的數(shù)據(jù)和配置文件
創(chuàng)建MinIO容器并運行:
docker run -p 9000:9000 -p 9090:9090 \
--net=host \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /home/minio/data:/data \
-v /home/minio/config:/root/.minio \
minio/minio server /data --console-address ":9090" -address ":9000"- 這將啟動MinIO服務(wù),使其可以通過主機(jī)的9000端口和9090端口進(jìn)行訪問。
- 登錄MinIO控制臺: 安裝完成后,通過瀏覽器訪問MinIO控制臺,默認(rèn)地址為
http://localhost:9000,使用設(shè)置的訪問密鑰和秘密密鑰進(jìn)行登錄。
2. Spring Boot集成MinIO 添加依賴
在pom.xml中添加以下依賴:
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.2</version>
</dependency>配置MinIO
在application.properties中添加MinIO的配置:
minio.host=http://localhost:9000 minio.access-key=minioadmin minio.secret-key=minioadmin minio.bucket=test-bucket
創(chuàng)建MinIO配置類
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MinioConfig {
@Value("${minio.host}")
private String host;
@Value("${minio.access-key}")
private String accessKey;
@Value("${minio.secret-key}")
private String secretKey;
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(host)
.credentials(accessKey, secretKey)
.build();
}
}創(chuàng)建存儲桶
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MinioService {
@Autowired
private MinioClient minioClient;
public void createBucket(String bucketName) {
if (!minioClient.bucketExists(b -> b.bucket(bucketName))) {
minioClient.makeBucket(m -> m.bucket(bucketName));
}
}
}文件上傳
import io.minio.MinioClient;
import io.minio.PutObjectResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
@Service
public class FileUploadService {
@Autowired
private MinioClient minioClient;
public String uploadFile(MultipartFile file, String bucketName, String objectName) throws Exception {
try (InputStream inputStream = file.getInputStream()) {
PutObjectResponse response = minioClient.putObject(
PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(inputStream, file.getSize(), -1)
.contentType(file.getContentType())
.build()
);
return "http://localhost:9000/" + bucketName + "/" + objectName;
}
}
}文件下載
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
@RestController
public class FileDownloadController {
@Autowired
private MinioClient minioClient;
@GetMapping("/download")
public void downloadFile(@RequestParam String bucketName, @RequestParam String objectName, HttpServletResponse response) {
try {
InputStream stream = minioClient.getObject(
GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build()
);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + objectName);
stream.transferTo(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}通過以上步驟,你可以在Spring Boot中成功集成并使用MinIO進(jìn)行文件存儲和管理。
到此這篇關(guān)于Spring Boot集成MinIO的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Spring Boot集成MinIO內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Boot搭配MinIO和KKFileView實現(xiàn)文件存儲和在線預(yù)覽
- springboot+vue實現(xiàn)Minio文件存儲的示例代碼
- springboot整合minio實現(xiàn)文件存儲功能
- SpringBoot整合MinIO實現(xiàn)文件存儲系統(tǒng)的代碼示例
- SpringBoot中整合Minio文件存儲的安裝部署過程
- Springboot集成minio實現(xiàn)文件存儲的實現(xiàn)代碼
- SpringBoot項目集成MinIO全過程
- springboot如何集成Minio文件服務(wù)器
- 在 Spring Boot 中集成 MinIO 對象存儲
- SpringBoot集成MinIO的示例代碼
相關(guān)文章
Shiro整合Springboot和redis,jwt過程中的錯誤shiroFilterChainDefinition問
這篇文章主要介紹了Shiro整合Springboot和redis,jwt過程中的錯誤shiroFilterChainDefinition問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
MybatisPlus,無XML分分鐘實現(xiàn)CRUD操作
這篇文章主要介紹了MybatisPlus,無XML分分鐘實現(xiàn)CRUD操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Java Web文件上傳與下載優(yōu)化的實現(xiàn)方案
文件上傳與下載是 Web 應(yīng)用中常見的功能,尤其是在需要處理大量文件傳輸、存儲的場景下,傳統(tǒng)的文件上傳和下載方式雖然簡單,但如果不加以優(yōu)化,可能會帶來一些問題,所以今天,我們將深入探討 Java Web 中如何實現(xiàn)高效的文件上傳和下載,需要的朋友可以參考下2025-02-02
JAVA過濾標(biāo)簽實現(xiàn)將html內(nèi)容轉(zhuǎn)換為文本的方法示例
這篇文章主要介紹了JAVA過濾標(biāo)簽實現(xiàn)將html內(nèi)容轉(zhuǎn)換為文本的方法,涉及java針對HTML代碼的正則替換相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Java兩種動態(tài)代理JDK動態(tài)代理和CGLIB動態(tài)代理詳解
這篇文章主要介紹了Java兩種動態(tài)代理JDK動態(tài)代理和CGLIB動態(tài)代理詳解,代理模式是23種設(shè)計模式的一種,他是指一個對象A通過持有另一個對象B,可以具有B同樣的行為的模式,為了對外開放協(xié)議,B往往實現(xiàn)了一個接口,A也會去實現(xiàn)接口,需要的朋友可以參考下2023-11-11
Java程序?qū)崿F(xiàn)導(dǎo)出Excel的方法(支持IE低版本)
下面小編就為大家?guī)硪黄狫ava程序?qū)崿F(xiàn)導(dǎo)出Excel的方法(支持IE低版本)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07
Elasticsearch常見字段映射類型之scaled_float解讀
這篇文章主要介紹了Elasticsearch常見字段映射類型之scaled_float解讀。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11

