linux安装minio以及springboot整合使用

文章目录

  • 1.linux安装minio
  • 2.springboot整合minio使用

1.linux安装minio

1.新建文件夹

mkdir /home/minio
# 数据文件夹
mkdir /home/minio/data
# 创建日志文件夹
mkdir /home/minio/log

2.进入文件夹

cd /home/minio

3.下载minio,链接可从官网获取

linux安装minio以及springboot整合使用_第1张图片

wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio

下载下来后会在当前所在文件夹看到minio文件
linux安装minio以及springboot整合使用_第2张图片

4.赋予权限

要给下载下来的minio赋予权限,不然后面无法启动

chmod +x /home/minio/minio

赋予权限之后如图
linux安装minio以及springboot整合使用_第3张图片

5.开放端口

因为我后面会指定minio使用9090和9000端口,所以先开放这两个端口,如果你指定的是别的端口,那这里也要相应放行对应的端口

sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent

6.重启防火墙

sudo firewall-cmd --reload
#查看开放的端口
sudo firewall-cmd --list-ports

7.启动

启动最好指定特定端口,不然很麻烦

9000端口是java api上传文件时的连接接口,而9090是浏览器访问时的访问端口,不要混淆!!

/home/minio/minio server /home/minio/data  --address:9000 --console-address :9090 > /home/minio/log/minio.log &

启动成功时查看minio.log可以看到如图
linux安装minio以及springboot整合使用_第4张图片

8.访问

http://ip:9090/
linux安装minio以及springboot整合使用_第5张图片

默认用户名密码都是minioadmin

9.修改默认密码

注意密码至少要8位,否则会出现启动不了的情况!!,具体可以查看minio.log日志

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678

linux安装minio以及springboot整合使用_第6张图片

10.手动创建Buckets

需要提前创建Buckets,当然也可以后面用代码创建,上传的文件都是存在Buckets中的

linux安装minio以及springboot整合使用_第7张图片
linux安装minio以及springboot整合使用_第8张图片
linux安装minio以及springboot整合使用_第9张图片

2.springboot整合minio使用

添加依赖


    io.minio
    minio
    7.0.2

application.yml添加minio的配置

minio:
  url: http://192.168.0.107
  port: 9000
  accessKey: minioadmin
  secretKey: minioadmin

MinIOConfig配置类

@Configuration
public class MinIOConfig {
    /**
     * minio地址
     */
    @Value("${minio.url}")
    private String endpoint;
    /**
     * 端口
     */
    @Value("${minio.port}")
    private int port;
    /**
     * minio用户名
     */
    @Value("${minio.accessKey}")
    private String accessKey;
    /**
     * minio密码
     */
    @Value("${minio.secretKey}")
    private String secretKey;

    @Bean
    public MinioClient minioClient() {
        try {
            return new MinioClient(endpoint, port, accessKey, secretKey, false);
        } catch (InvalidEndpointException | InvalidPortException e) {
            throw new RuntimeException(e);
        }
    }
}

minio工具类

@Slf4j
@Component
public class MinIoUtil {

    @Autowired
    private MinioClient minioClient;


    /**
     * 判断 bucket是否存在
     *
     * @param bucketName 桶名
     * @return
     */
    @SneakyThrows(Exception.class)
    public boolean bucketExists(String bucketName) {
        return minioClient.bucketExists(bucketName);
    }

    /**
     * 创建 bucket
     *
     * @param bucketName 桶名
     */
    @SneakyThrows(Exception.class)
    public void createBucket(String bucketName) {
        boolean isExist = minioClient.bucketExists(bucketName);
        if (!isExist) {
            minioClient.makeBucket(bucketName);
        }
    }

    /**
     * 桶名
     *
     * @return
     */
    @SneakyThrows(Exception.class)
    public List getAllBuckets() {
        return minioClient.listBuckets();
    }

    /**
     * 文件上传
     *
     * @param bucketName 桶名
     * @param fileName   文件名
     * @param filePath   文件名
     * @return
     */
    @SneakyThrows(Exception.class)
    public String upload(String bucketName, String fileName, String filePath) {
        minioClient.putObject(bucketName, fileName, filePath, null);
        return getFileUrl(bucketName, fileName);
    }

    /**
     * 文件上传
     *
     * @param bucketName 桶名
     * @param fileName   文件名
     * @param stream     文件流
     * @return
     */
    @SneakyThrows(Exception.class)
    public String upload(String bucketName, String fileName, InputStream stream) {
        minioClient.putObject(bucketName, fileName, stream, new PutObjectOptions(stream.available(), -1));
        return getFileUrl(bucketName, fileName);
    }

    /**
     * 文件上传
     *
     * @param bucketName 桶名
     * @param file       文件
     * @return
     */
    @SneakyThrows(Exception.class)
    public String upload(String bucketName, MultipartFile file) {
        final InputStream is = file.getInputStream();
        final String fileName = file.getOriginalFilename();
        minioClient.putObject(bucketName, fileName, is, new PutObjectOptions(is.available(), -1));
        is.close();
        return getFileUrl(bucketName, fileName);
    }

    /**
     * 删除文件
     *
     * @param bucketName 桶名
     * @param fileName   文件名
     */
    @SneakyThrows(Exception.class)
    public void deleteFile(String bucketName, String fileName) {
        minioClient.removeObject(bucketName, fileName);
    }

    /**
     * 下载文件
     *
     * @param bucketName 桶名
     * @param fileName   文件名
     * @param response
     */
    @SneakyThrows(Exception.class)
    public void download(String bucketName, String fileName, HttpServletResponse response) {
        // 获取对象的元数据
        final ObjectStat stat = minioClient.statObject(bucketName, fileName);
        response.setContentType(stat.contentType());
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
        InputStream is = minioClient.getObject(bucketName, fileName);
        IOUtils.copy(is, response.getOutputStream());
        is.close();
    }

    /**
     * 获取minio文件的下载地址
     *
     * @param bucketName 桶名
     * @param fileName   文件名
     * @return
     */
    @SneakyThrows(Exception.class)
    public String getFileUrl(String bucketName, String fileName) {
        return minioClient.presignedGetObject(bucketName, fileName);
    }
}


测试用例

@Test
public void minioUpload(){
      String imageUrl = minIoUtil.upload("tsc", "aa", "C:\\Users\\18316\\Pictures\\Camera Roll\\a.jpg");
      System.out.println(imageUrl);
  }

你可能感兴趣的:(minio,linux,spring,boot)