• 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;
     
        }
  • 相关阅读:
    [五、交互操作]15使用DisclosureGroup视图实现点餐功能
    [五、交互操作]13使用AppStore Overlay向用户推荐其他的应用
    [五、交互操作]11预览视图在正常模式和黑暗模式下的效果
    [五、交互操作]10在预览窗口使用不同的模拟器预览用户界面
    [五、交互操作]8借助sizeCategory预览不同字体下的文本视图
    [五、交互操作]14使用fileExporter将文档导出到iCloud
    int(1) 和 int(10) 有什么区别?资深开发竟然都理解错了!
    Spring Boot 3.0 M1 发布,正式弃用 Java 8,最低要求 Java 17。。。
    发了 20w 年终奖,太激动了。。。
    头条面试官:如何设计群聊消息的已读未读功能?懵了。。
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/14870522.html
Copyright © 2020-2023  润新知