当前位置: 首页 > article >正文

一个完整的上传文件示例

一个完整的上传文件示例

需要可以看minio 我的上个文章有介绍

1、加入如下依赖

io.minio minio 8.5.2

yaml配置

minio:
  endpointUrl: http://127.0.0.1:9000
  accessKey: minioadmin
  secreKey: minioadmin
  bucketName: spzx-bucket
  

MinioProperties配置类用来通过前缀加载yaml

@Data
@Component
@ConfigurationProperties(prefix = "spzx.minio")
public class MinioProperties {

    private String endpointUrl;
    private String accessKey;
    private String secreKey;
    private String bucketName;
}

controller

@Resource
private FileUploadService fileUploadService;

@PostMapping("/fileUpload")
public Result<String> fileUploadService (@RequestParam("file") MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
     String url =fileUploadService.uploadFile(file);
    return Result.build(url, ResultCodeEnum.SUCCESS);
}

实现类

@Resource
private MinioProperties minioProperties ;
@Override
public String uploadFile(MultipartFile multipartFile) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {



    try {
        // 创建一个Minio的客户端对象
        MinioClient minioClient = MinioClient.builder()
                .endpoint(minioProperties.getEndpointUrl())
                .credentials(minioProperties.getAccessKey(), minioProperties.getSecreKey())
                .build();

        // 判断桶是否存在
        boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioProperties.getBucketName()).build());
        if (!found) {       // 如果不存在,那么此时就创建一个新的桶
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioProperties.getBucketName()).build());
        } else {  // 如果存在打印信息
            System.out.println("Bucket 'spzx-bucket' already exists.");
        }

        // 设置存储对象名称
        String dateDir = DateUtil.format(new Date(), "yyyyMMdd");
        String uuid = UUID.randomUUID().toString().replace("-", "");
        //20230801/443e1e772bef482c95be28704bec58a901.jpg
        String fileName = dateDir+"/"+uuid+multipartFile.getOriginalFilename();
        System.out.println(fileName);

        PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                .bucket(minioProperties.getBucketName())
                .stream(multipartFile.getInputStream(), multipartFile.getSize(), -1)
                .object(fileName)
                .build();
        minioClient.putObject(putObjectArgs) ;

        return minioProperties.getEndpointUrl() + "/" + minioProperties.getBucketName() + "/" + fileName ;

    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

http://www.kler.cn/a/272139.html

相关文章:

  • PyQt5 超详细入门级教程上篇
  • LabVIEW太赫兹二维扫描成像系统
  • 在centos上编译安装opensips【初级-默认安装】
  • 【回忆迷宫——处理方法+DFS】
  • 搭建Hadoop源代码阅读环境
  • 【数据结构】顺序队列与链式队列
  • stable diffusion webui 搭建和初步使用
  • 生成式人工智能在金融领域:FinGPT、BloombergGPT及其未来
  • 数学建模-估计出租车的总数
  • 重拾C++之菜鸟刷算法第13篇---回溯算法
  • Linux进程管理:(六)SMP负载均衡
  • Spring Web MVC入门(3)
  • Nacos与Eureka的使用与区别
  • 【Spring 篇】SpringMVC的请求:舞台上的开端
  • RUST egui体验
  • 玩转C语言——数组初探
  • Linux下进程的调度与切换
  • 模块化项目Eclipse测试网零撸教程
  • 苍穹外卖swagger
  • python的集合应用
  • 练习8 Web [GYCTF2020]Blacklist
  • 爬虫(六)
  • 不锈钢多功能电工剥线钳分线绕线剪线剥线钳剥线压线扒皮钳子
  • MC78L05ACDR2G线性稳压器芯片中文资料规格书PDF数据手册引脚图参数图片价格
  • C# event的使用
  • WEB前端作业一