吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2636|回复: 6
收起左侧

[Java 转载] springboot 整合MinIO实现文件的上传

  [复制链接]
cokewithice08 发表于 2021-12-6 15:17
MinIO--文件上传

MinIO--文件上传

整合springboot

maven依赖

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

application.yml

spring:
  servlet:
    multipart:
      enabled: true #开启文件上传
      max-file-size: 10MB #限制文件上传大小为10M

 minio:
  endpoint: http://baidu.com #你的minio服务器所在的地址
  bucketName: buck #存储桶名称
  accessKey: access #访问的key
  secretKey: secret #访问的秘钥

MinController

 private static final Logger log = LoggerFactory.getLogger(MinioController.class);
    @Value("${minio.endpoint}")
    private String ENDPOINT;
    @Value("${minio.bucketName}")
    private String BUCKET_NAME;
    @Value("${minio.accessKey}")
    private String ACCESS_KEY;
    @Value("${minio.secretKey}")
    private String SECRET_KEY;

    @PostMapping("/upload")
    public Result upload(@RequestParam("file") MultipartFile file) {
        try {
            //创建一个MinIO的Java客户端
            MinioClient minioClient = new MinioClient(ENDPOINT, ACCESS_KEY, SECRET_KEY);
            boolean isExist = minioClient.bucketExists(BUCKET_NAME);
            if (isExist) {
                log.info("存储桶已经存在!");
            } else {
                //创建存储桶并设置只读权限
                minioClient.makeBucket(BUCKET_NAME);
                minioClient.setBucketPolicy(BUCKET_NAME, "*.*", PolicyType.READ_ONLY);
            }
            String filename = file.getOriginalFilename();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            // 设置存储对象名称
            String objectName = sdf.format(new Date()) + "/" + filename;
            // 使用putObject上传一个文件到存储桶中
            minioClient.putObject(BUCKET_NAME, objectName, file.getInputStream(), file.getContentType());
            log.info("文件上传成功!");
            MinioUploadDto minioUploadDto = new MinioUploadDto();
            minioUploadDto.setName(filename);
            minioUploadDto.setUrl(ENDPOINT + "/" + BUCKET_NAME + "/" + objectName);
            return Result.success(minioUploadDto);
        } catch (Exception e) {
            log.info("上传发生错误: {}!", e.getMessage());
        }
        return Result.failed();
    }

    @PostMapping("/delete")
    public Result delete(@RequestParam("objectName") String objectName) {
        try {
            MinioClient minioClient = new MinioClient(ENDPOINT, ACCESS_KEY, SECRET_KEY);
            minioClient.removeObject(BUCKET_NAME, objectName);
            return Result.success(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Result.failed();
    }
最后在postman中测试
在body选中form-data,key中参数为file,value选择你要的文件
===key                          ===value
file                             aaa.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xiaocai66 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaocai66 发表于 2021-12-6 17:39
学习了,感谢分享
luoJugood 发表于 2021-12-15 16:47
 楼主| cokewithice08 发表于 2021-12-16 08:16
maojiuming 发表于 2021-12-25 10:29
最近项目上正在使用minio,来学习下
richwang 发表于 2022-2-22 15:18
正要查找上传的代码,谢谢分享。
傲天越 发表于 2022-2-22 18:27
学习一下,感谢分享!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表