千家信息网

springboot中怎么使用minio存储容器

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要为大家展示了"springboot中怎么使用minio存储容器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"springboot中怎么使用mi
千家信息网最后更新 2025年01月19日springboot中怎么使用minio存储容器

这篇文章主要为大家展示了"springboot中怎么使用minio存储容器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"springboot中怎么使用minio存储容器"这篇文章吧。

docker运行

docker run  -p 9000:9000     -p 9001:9001     -v /mydata/minio/data:/data    minio/minio server /data --console-address ":9001

java导包

最好是这个版本,其他版本尝试过都出bug了

                     io.minio            minio            8.2.1        

配置文件

spring:  # 上传文件大小设置  servlet:    multipart:      enabled: true      max-file-size: 50MBminio:  endpoint: xxx:9000  accesskey: xxx  secretkey: xxx  bucketName: xxx

操作

1、编写一个属性文件

@Data@Component@ConfigurationProperties(prefix = "minio") // 从配置文件的前缀拿public class MinioProperties {    private String endpoint;    private String accessKey;    private String secretKey;}

2、编写一个minioClient

@Configurationpublic class MinioConfig {    @Resource    private MinioProperties minioProperties;    @Bean    public MinioClient minioClient() {        System.out.println(minioProperties.getAccessKey());        System.out.println(minioProperties.getSecretKey());        MinioClient minioClient = MinioClient.builder()                .endpoint(minioProperties.getEndpoint())                .credentials(minioProperties.getAccessKey(), minioProperties.getSecretKey())                .build();        return minioClient;    }}

3、上传文件Api

public class MinioServiceImpl implements MinioService {    @Value("${minio.bucketName}")    private String bucketName;    @Value("${minio.endpoint}")    private String endPoint;    @Resource    private MinioClient minioClient;    @Override    public List uploadFile(MultipartFile[] file) throws ServerException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {        if (file == null || file.length == 0) {            throw new APIException(ResultCode.PARAM_IS_BLANK);        }        List fileUrlList = new ArrayList<>(file.length);        String url = "";        for (MultipartFile multipartFile : file) {            // 1.获取文件名            String originalFilename = multipartFile.getOriginalFilename();            // 2.截取后缀名            String imgSuffix = originalFilename.substring(originalFilename.lastIndexOf("."));            // 3.生成唯一名            String newFileName = UUID.randomUUID().toString() + imgSuffix;            // 4.日期目录            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");            String dataPath = dateFormat.format(new Date());            // 5.合成路径            String finalFileName = dataPath + "/" + newFileName;            // 别忘了bucketName            url = endPoint + "/" + bucketName + "/" + finalFileName;            try {                // 文件上传                InputStream in = multipartFile.getInputStream();                minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(finalFileName).stream(                        in, multipartFile.getSize(), -1)                        .contentType(multipartFile.getContentType())                        .build());                in.close();                fileUrlList.add(url);            } catch (IOException e) {                throw new APIException(ResultCode.COMMON_FAIL);            }        }        return fileUrlList;    }}

本地浏览设置

通过上面这串url就可以直接访问图片了

以上是"springboot中怎么使用minio存储容器"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0