上一片博文里我们介绍了 minio 对象存储的部署,这篇博文 我们主要介绍下 基于minio和spring boot的工程开发
1. 构建Spring boot 工程
? ? ? ? 选择依赖 web,lombok,devops?
2. 修改pom.xml 文件
<properties>
? ? <minio.version>4.0.0</minio.version>
</properties>
<dependency>
? ? <groupId>io.minio</groupId>
? ? <artifactId>minio</artifactId>
? ? <version>${minio.version}</version>
</dependency>
3. Minio 公共类
public class MinioUtil {
??? ?private static String minio_url;
??? ?private static String minio_name;
??? ?private static String minio_pass;
? ?? ?private static String minio_bucketName;
??
?? ?/**
?? ? *?
?? ? * @Title: uploadImage
?? ? * @Description:上传图片
?? ? * @param inputStream
?? ? * @param suffix
?? ? * @return
?? ? * @throws Exception
?? ? */
?? ?public static JSONObject uploadImage(InputStream inputStream, String suffix) throws Exception {
?? ??? ?return upload(inputStream, suffix, "image/jpeg");
?? ?}
??
?? ?/**
?? ? * @Title: uploadVideo
?? ? * @Description:上传视频
?? ? * @param inputStream
?? ? * @param suffix
?? ? * @return
?? ? * @throws Exception
?? ? */
?? ?public static JSONObject uploadVideo(InputStream inputStream, String suffix) throws Exception {
?? ??? ?return upload(inputStream, suffix, "video/mp4");
?? ?}
?
??? ?/**
?? ? * @Title: uploadVideo
?? ? * @Description:上传文件
?? ? * @param inputStream
?? ? * @param suffix
?? ? * @return
?? ? * @throws Exception
?? ? */
?? ?public static JSONObject uploadFile(InputStream inputStream, String suffix) throws Exception {
?? ??? ?return upload(inputStream, suffix, "application/octet-stream");
?? ?}
??
?? ?/**
?? ? * 上传字符串大文本内容
?? ? *?
?? ? * @Title: uploadString
?? ? * @Description:描述方法
?? ? * @param str
?? ? * @return
?? ? * @throws Exception
?? ? */
?? ?public static JSONObject uploadString(String str) throws Exception {
?? ??? ?if (!StringUtils.notNullAndEmpty(str)) {
?? ??? ??? ?return new JSONObject();
?? ??? ?}
?? ??? ?InputStream inputStream = new ByteArrayInputStream(str.getBytes());
?? ??? ?return upload(inputStream, null, "text/html");
?? ?}
??
?? ?/**
?? ? * @Title: upload
?? ? * @Description:上传主功能
?? ? * @return
?? ? * @throws Exception
?? ? */
?? ?private static JSONObject upload(InputStream inputStream, String suffix, String contentType)?
? ? ? ? ? ? ?throws Exception {
?? ??? ?JSONObject map = new JSONObject();
?? ??? ?PropertiesLoader p = new PropertiesLoader("system.properties");
?? ??? ?minio_url = p.getProperty("minio_url");
?? ??? ?minio_name = p.getProperty("minio_name");
?? ??? ?minio_pass = p.getProperty("minio_pass");
?? ??? ?minio_bucketName = p.getProperty("minio_bucketName");
?? ??? ?MinioClient minioClient = new MinioClient(minio_url, minio_name, minio_pass);
?? ??? ?SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
?? ??? ?String ymd = sdf.format(new Date());
?? ??? ?String objectName = ymd + "/" + UUID.randomUUID().toString() + (suffix != null ? suffix : "");
?? ??? ?minioClient.putObject(minio_bucketName, objectName, inputStream, contentType);
?? ??? ?String url = minioClient.getObjectUrl(minio_bucketName, objectName);
?? ??? ?map.put("flag", "0");
?? ??? ?map.put("mess", "上传成功");
?? ??? ?map.put("url", url);
?? ??? ?map.put("urlval", url);
?? ??? ?map.put("path", minio_bucketName + "/" + objectName);
?? ??? ?return map;
?? ?}
}
4. 上传下载文件
package com.minio.client;
?
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import lombok.extern.slf4j.Slf4j;
import org.xmlpull.v1.XmlPullParserException;
?
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
?
@Slf4j
public class FileUploader {
????public static void main(String[] args)?
? ? ? ? ? ? throws NoSuchAlgorithmException, IOException,?
? ? ? ? ? ? ? ? ? ?InvalidKeyException, XmlPullParserException {
????????try {
????????????MinioClient minioClient =
? ? ? ? ? ? ? ? ? ?new MinioClient("https://minio.sunseaiot.com", "sunseaiot", "sunseaiot",true);
?
????????????// 检查存储桶是否已经存在
????????????if(minioClient.bucketExists("ota")) {
????????????????log.info("Bucket already exists.");
????????????} else {
????????????????// 创建一个名为ota的存储桶
????????????????minioClient.makeBucket("ota");
????????????????log.info("create a new bucket.");
????????????}
?
????????????//获取下载文件的url,直接点击该url即可在浏览器中下载文件
????????????String url = minioClient.presignedGetObject("ota","hello.txt");
????????????log.info(url);
?
????????????//获取上传文件的url,这个url可以用Postman工具测试,在body里放入需要上传的文件即可
????????????String url2 = minioClient.presignedPutObject("ota","ubuntu.tar");
????????????log.info(url2);
?
????????????// 下载文件到本地
????????????minioClient.getObject("ota","hello.txt", "/Users/hbl/hello2.txt");
????????????log.info("get");
?
????????????// 使用putObject上传一个本地文件到存储桶中。
????????????minioClient.putObject("ota","tenant2/hello.txt", "/Users/hbl/hello.txt");
????????????log.info("/Users/hbl/hello.txt is successfully uploaded as hello.txt to `task1` bucket.");
????????} catch(MinioException e) {
????????????log.error("Error occurred: " + e);
????????}
????}
}?
5. 介于spring boot 与 minio 的代码结成完毕