springcloud minio 文件上传

Posted 正怒月神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud minio 文件上传相关的知识,希望对你有一定的参考价值。

POM

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

 

配置文件

#minio 文件服务器配置
minio:
  hostUrl: http://localhost:9000
  accessKey: admin
  secretKey: admin
  bucketName: myfile

 

Controller/Action:

单个文件上传:

//minio文件服务器参数
    @Value("${minio.hostUrl}")
    private String minioHostUrl;
    @Value("${minio.accessKey}")
    private String minioAccessKey;
    @Value("${minio.secretKey}")
    private String miniosecretKey;
    @Value("${minio.bucketName}")
    private String minioBucketName;

    /**
     *  单文件(上传到minio文件服务器)
     */
    @RequestMapping(value = "upload", method = RequestMethod.POST)
    public List<String> upload(HttpServletRequest request) throws Exception {
        List<String> filePath=new ArrayList<>();
        MultipartHttpServletRequest murequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> files = murequest.getFileMap();// 得到文件map对象

        List<String> filePath = new ArrayList<String>();
        for (MultipartFile file : files.values()) {
            //源文件名
            String originalFilename = file.getOriginalFilename();
            //保存文件的路径(如2020/7/10/4d132f66a7b948c882e2c1649a58ab70-file1.jpg),防止文件名重复。
            String saveFileName = UUID.randomUUID().toString().replace("-", "").toLowerCase()+"-"+originalFilename;
            //初始化MinioClient
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(minioHostUrl)
                    .credentials(minioAccessKey, minioSecretKey)
                    .build();
            //上传
            minioClient.putObject(
                    PutObjectArgs.builder()
                    .bucket(minioBucketName)        //桶名(文件夹名)
                    .stream(file.getInputStream(),file.getSize(), 5*1024*1024)      //文件,大小
                    .object(saveFileName)       //文件名
                    .build());
            String backFileName="/"+minioBucketName+"/"+saveFileName;
            filePath.add(backFileName);
        }

        return filePath;

    }

 

多个文件上传:

/**
     *  多文件(上传到minio文件服务器)
     */
    @RequestMapping(value = "upload", method = RequestMethod.POST)
    public List<String> upload(@RequestParam("file") MultipartFile[] files, HttpServletRequest request) throws Exception {
        List<String> filePath = new ArrayList<>();
        for (MultipartFile file : files) {
            //源文件名
            String originalFilename = file.getOriginalFilename();
            //保存文件的路径(如2020/7/10/4d132f66a7b948c882e2c1649a58ab70.jpg)
            String saveFileName = UUID.randomUUID().toString().replace("-", "").toLowerCase()+"-"+originalFilename;
            //初始化MinioClient
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(minioHostUrl)
                    .credentials(minioAccessKey, minioSecretKey)
                    .build();
            //上传
            minioClient.putObject(
                    PutObjectArgs.builder()
                    .bucket(minioBucketName)        //桶名(文件夹名)
                    .stream(file.getInputStream(),file.getSize(), 5*1024*1024)      //文件,大小
                    .object(saveFileName)       //文件名
                    .build());
            String backFileName="/"+minioBucketName+"/"+saveFileName;
            filePath.add(backFileName);
        }

        return filePath;

    }

 

以上是关于springcloud minio 文件上传的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot上传文件到Minio服务器

文件或图片上传到minio

文件或图片上传到minio

Java编程系列Minio实现文件上传下载

Java编程系列Minio实现文件上传下载

Java编程系列Minio实现文件上传下载