0
点赞
收藏
分享

微信扫一扫

springboot整合minio

1.pom.xml文件

<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- minio -->
<dependency>
	<groupId>io.minio</groupId>
	<artifactId>minio</artifactId>
	<version>3.0.10</version>
</dependency>

<!-- alibaba的fastjson -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.51</version>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.16</version>
</dependency>

2.application.yml文件

minio:
  endpoint: http://192.168.31.112:9000
  accesskey: minioadmin
  secretKey: minioadmin
spring:
  servlet:
    multipart:
      enabled: true
      max-request-size: 100GB
      max-file-size: 100GB

3.创建minio配置类

package com.minio.config;

import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MinioConfig {
    
    /**
     * 连接url
     */
    @Value("${minio.endpoint}")
    private String endpoint;
    /**
     * 用户名
     */
    @Value("${minio.accesskey}")
    private String accesskey;
    /**
     * 密码
     */
    @Value("${minio.secretKey}")
    private String secretKey;

    @Bean
    public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
        return new MinioClient(endpoint , accesskey , secretKey);
    }
}

4.创建文件处理工具类

package com.minio.util;

import com.alibaba.fastjson.JSONObject;
import io.minio.MinioClient;
import io.minio.errors.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;

@Component
public class MinioUtils {

    @Autowired
    private MinioClient minioClient;

    /**
     * 创建桶
     * @param bucketName
     */
    public void createBucket(String bucketName) throws InvalidBucketNameException, InsufficientDataException, XmlPullParserException, ErrorResponseException, NoSuchAlgorithmException, IOException, NoResponseException, InvalidKeyException, InternalException, RegionConflictException {
        boolean is = minioClient.bucketExists(bucketName);
        if (is){
            return;
        }
        minioClient.makeBucket(bucketName);
    }

    /**
     * 文件上传
      * @param file
     * @param bucketName
     * @return
     */
    public JSONObject uploadFile(MultipartFile file,String bucketName) {
        JSONObject result = new JSONObject();
        try {
            createBucket(bucketName);
            String originalFilename = file.getOriginalFilename(); //文件名
            String last = originalFilename.substring(originalFilename.lastIndexOf("."));
            String randomID = UUID.randomUUID().toString();
            String fileID = randomID + last;

            minioClient.putObject(bucketName , fileID , file.getInputStream() , file.getContentType());
            result.put("fileName",originalFilename );
            result.put("fileID",fileID );
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 获取文件流
     * @param bucketName
     * @param fileID
     */
    public InputStream getInputStream(String bucketName , String fileID) throws InvalidArgumentException, InvalidBucketNameException, InsufficientDataException, XmlPullParserException, ErrorResponseException, NoSuchAlgorithmException, IOException, NoResponseException, InvalidKeyException, InternalException {
        return minioClient.getObject(bucketName, fileID);
    }
}

5.创建上传控制器

package com.minio.controller;

import com.alibaba.fastjson.JSONObject;
import com.minio.util.MinioUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("file")
public class FileController {

    private String BUCKET_NAME = "sys-file-bucket";
    @Autowired
    private MinioUtils minioUtils;

    @RequestMapping("uploadFile")
    public JSONObject uploadFile(@RequestParam(name = "file") MultipartFile multipartFile){
        return minioUtils.uploadFile(multipartFile, BUCKET_NAME);
    }
}
举报

相关推荐

0 条评论