1、下载链接
wget http://dl.minio.org.cn/server/minio/release/darwin-amd64/minio
2、赋予可执行权限,文件颜色变绿了表示可执行,之前是白色
chmod +x minio
3、启动
./minio server /data
#后台运行
nohup ./minio server ./data > ./logs/minio.log —address 0.0.0.0:9000 —console-address 0.0.0.0:9001 2>&1 &#
用户名
export MINIO_ACCESS_KEY=minio2021
#密码
export MINIO_SECRET_KEY=minio2021
查看进程
ps -ef | grep minio
工具类
package com.example.utils;import com.example.entity.FileInfo;import com.example.exception.MyException;import io.minio.MinioClient;import io.minio.ObjectStat;import io.minio.policy.PolicyType;import lombok.Data;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.time.LocalDate;import java.util.UUID;/*** 文件服务访问路径 服务器地址/端口号/存储桶/文件名* eg:http://222.178.212.29:9000/2020-12-08/05a4358f-d37d-4ea5-92c3-edee92145095-shop.jpg*/@Component@Datapublic class MinioUtil {//ippublic static final String ENDPOINT = "http://116.62.119.246";//端口public static final int PROT = 9000;//ACCESS_KEYprivate static final String ACCESSKEY = "minio2021"; //用户名//SECRET_KEYprivate static final String SECRETKET = "minio2021";//密码//存储桶名称private static String BUCKETNAME = null;/*** 删除文件** @param bucketName 存储桶名称* @param objectName 存储桶里的文件名称* @return* @throws Exception*/public static void removeFile(String bucketName, String objectName) {try {MinioClient minioClient = new MinioClient(ENDPOINT, PROT, ACCESSKEY, SECRETKET);ObjectStat objectStat = minioClient.statObject(bucketName, objectName);if (objectStat != null) {minioClient.removeObject(bucketName, objectName);} else {throw new MyException(false,500, "删除文件不存在");}} catch (Exception e) {throw new MyException(false,500, "文件删除失败");}}/*** 文件上传** @param file 文件* @param buchetName 桶名* @return* @throws Exception*/public static Boolean upload(MultipartFile file, String buchetName) {String BUCKETNAME =null;try {MinioClient minioClient = new MinioClient(ENDPOINT, PROT, ACCESSKEY, SECRETKET);//存入bucket不存在则创建if (!minioClient.bucketExists(BUCKETNAME)) {minioClient.makeBucket(BUCKETNAME);//存储桶名称 文件对象前缀 存储策略:读写minioClient.setBucketPolicy(BUCKETNAME, "*", PolicyType.READ_WRITE);}String fileName = file.getOriginalFilename();//原始文件名String prefix = fileName.substring(fileName.lastIndexOf(".") + 1);//后缀名// 文件存储的目录结构String uuid = UUID.randomUUID().toString().replaceAll("-","");String objectName =LocalDate.now().toString().replaceAll("-","") +"-"+ uuid + "-" + fileName;// 存储文件minioClient.putObject(BUCKETNAME, objectName, file.getInputStream(), file.getContentType());} catch (Exception e) {e.printStackTrace();throw new MyException(false,500, "上传失败");}return true;}/*** 下载文件** @param bucketName 存储桶名称* @param objectName 存储桶里的文件名称* @return* @throws Exception*/public static InputStream getFile(String bucketName, String objectName) {InputStream inputStream = null;try {MinioClient minioClient = new MinioClient(ENDPOINT, PROT, ACCESSKEY, SECRETKET);ObjectStat objectStat = minioClient.statObject(bucketName, objectName);if (objectStat != null) {inputStream = minioClient.getObject(bucketName, objectName);} else {throw new MyException(false,500, "文件不存在");}} catch (Exception e) {e.printStackTrace();throw new MyException(false,500, "下载失败");}return inputStream;}}
