minio的中文文檔:https://docs.min.io/cn/
minio安裝
-
首先查詢docker鏡像:
docker search minio
-
選着stars最高的那個拉取:
docker pull minio/minio
-
啟動minio服務器,並設置端口號,容器名,賬號和密碼:
docker run -p 9000:9000 --name minio -e MINIO_ACCESS_KEY=tanchuntcc -e MINIO_SECRET_KEY=tanchuntcc -v /data:/data minio/minio server /data
minio操作
-
啟動成功后,訪問你minio的ip地址,這里我docker安裝在本機,所以是http://localhost:9000,輸入剛剛設置的賬號密碼。

-
登陸后右下角可以創建bucket.


-
創建多個bucket后

-
可以選擇編輯和刪除

-
可以點擊右下角上傳文件

-
支持各種類型的文件:

首先創建一個Springboot項目,在resources中的application.yml文件添加如下配置:
server: port: 8080 spring: servlet: multipart: enabled: true #開啟文件上傳 max-file-size: 500MB max-request-size: 500MB minio: endpoint: http://localhost:9000 #Minio服務所在地址 bucketName: tcc #存儲桶名稱 accessKey: tanchuntcc #訪問的key secretKey: tanchuntcc #訪問的秘鑰
添加minio的maven依賴:
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10</version> </dependency>
controller的代碼如下:
@RestController("/minioDemo") public class MinioDemoController { private static final Logger LOGGER = LoggerFactory.getLogger(MinioDemoController.class); @Value("${minio.endpoint}") private String ENDPOINT; @Value("${minio.bucketName}") private String BUCKETNAME; @Value("${minio.accessKey}") private String ACCESSKEY; @Value("${minio.secretKey}") private String SECRETKEY; //文件創建 @PostMapping public String upload(MultipartFile file) { String s=null; try { MinioClient minioClient = new MinioClient(ENDPOINT, ACCESSKEY, SECRETKEY); //存入bucket不存在則創建,並設置為只讀 if (!minioClient.bucketExists(BUCKETNAME)) { minioClient.makeBucket(BUCKETNAME); minioClient.setBucketPolicy(BUCKETNAME, "*.*", PolicyType.READ_ONLY); } String filename = file.getOriginalFilename(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 文件存儲的目錄結構 String objectName = sdf.format(new Date()) + "/" + filename; // 存儲文件 minioClient.putObject(BUCKETNAME, objectName, file.getInputStream(), file.getContentType()); LOGGER.info("文件上傳成功!"); s=ENDPOINT + "/" + BUCKETNAME + "/" + objectName; } catch (Exception e) { LOGGER.info("上傳發生錯誤: {}!", e.getMessage()); } return s; } //文件刪除 @DeleteMapping public String delete(String name) { try { MinioClient minioClient = new MinioClient(ENDPOINT, ACCESSKEY, SECRETKEY); minioClient.removeObject(BUCKETNAME, name); } catch (Exception e) { return "刪除失敗"+e.getMessage(); } return "刪除成功"; } } @GetMapping public void downloadFiles(@RequestParam("filename") String filename, HttpServletResponse httpResponse) { try { MinioClient minioClient = new MinioClient(ENDPOINT, ACCESSKEY, SECRETKEY); InputStream object = minioClient.getObject(BUCKETNAME, filename); byte buf[] = new byte[1024]