Rumah >Java >javaTutorial >SpringBoot+MinIO melaksanakan penyimpanan objek

SpringBoot+MinIO melaksanakan penyimpanan objek

Java学习指南
Java学习指南ke hadapan
2023-07-20 11:09:27803semak imbas

1. MiniIO

MinIO ialah perkhidmatan penyimpanan objek berdasarkan protokol sumber terbuka Lesen Apache v2.0. Ia serasi dengan antara muka perkhidmatan storan awan Amazon S3 dan sangat sesuai untuk menyimpan data tidak berstruktur berkapasiti besar, seperti gambar, video, fail log, data sandaran dan imej bekas/mesin maya, dsb., dan fail objek boleh daripada sebarang saiz, antara beberapa Julat dari kb hingga maksimum 5T.

MinIO ialah perkhidmatan yang sangat ringan yang boleh digabungkan dengan mudah dengan aplikasi lain, seperti NodeJS, Redis atau MySQL.

2. Pemasangan dan permulaan MiniIO

Memandangkan MiniIO adalah pelayan yang berasingan dan perlu digunakan secara berasingan, sila semak blog berikut untuk penggunaan MiniIO pada sistem Windows.

.
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.16</version>
    </dependency>
    <!-- SpringBoot Web容器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>8.3.4</version>
    </dependency>
  • 5. Menulis kelas perniagaan Java
  • Kaedah yang terlibat dalam minio ialah: menentukan sama ada baldi wujud, membuat baldi, memuat naik fail, membaca fail, memuat turun fail, memadam fail dan operasi lain

    1 :

    # 设置单个文件大小
    spring.servlet.multipart.max-file-size= 50MB
    #minio文件服务器配置
    s3.url=http://localhost:9000
    s3.accessKey=admin
    s3.secretKey=admin123
    s3.bucketName=test

    2. Kelas konfigurasi Minio:

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
     
     
    /**
     * @Author yang
     * @Date 2023/1/3 14:00
     * @Version 1.0
     */
    @Data
    @Component
    @ConfigurationProperties(prefix = "s3")
    public class StorageProperty {
        private String url;
        private String accessKey;
        private String secretKey;
    //    private long callTimeOut = 60000;
    //    private long readTimeOut = 300000;
    }

    6. MinIoController

    Antaramuka untuk muat naik fail, bacaan fail, muat turun fail dan pemadaman fail adalah seperti berikut:

    /**
     * @Author yangb
     * @Date 2022/11/27 15:55
     * @Version 1.0
     */
    @RestController
    @RequestMapping("/minio")
    public class MinIoController extends BaseController {
     
        MinioUtil minioUtil = new MinioUtil();
     
        /**
         * 上传文件
         * @param file
         * @return
         */
        @PostMapping("/uploadFile")
        public AjaxResult uploadFile(@RequestBody MultipartFile file) {
            MinioClient minioClient = MinioClientConfig.getMinioClient();
            if (minioClient == null) {
                return AjaxResult.error("连接MinIO服务器失败", null);
            }
            ResultEntity<Map<String, Object>> result = minioUtil.minioUpload(file, "", "data-enpower");
            if (result.getCode() == 0) {
                return AjaxResult.success("上传成功");
            } else {
                return AjaxResult.error("上传错误!!!");
            }
        }
     
        /**
         * 获取文件预览地址
         * @param fileName
         * @return
         */
        @RequestMapping("/getRedFile")
        public AjaxResult getRedFile(@RequestBody String fileName) {
            MinioClient minioClient = MinioClientConfig.getMinioClient();
            if (minioClient == null) {
                return AjaxResult.error("连接MinIO服务器失败", null);
            }
            String url = minioUtil.getPreviewFileUrl("data-enpower",fileName);
            return AjaxResult.success(url);
        }
     
        /**
         * 下载文件
         * @param fileName
         * @param response
         * @return
         */
        @RequestMapping("/downloadFile")
        public String downloadFile(@RequestParam String fileName, HttpServletResponse response) {
            MinioClient minioClient = MinioClientConfig.getMinioClient();
            if (minioClient == null) {
                return "连接MinIO服务器失败";
            }
            return minioUtil.downloadFile("data-enpower",fileName,response) != null ? "下载成功" : "下载失败";
        }
     
        /**
         * 删除文件
         *
         * @param fileName 文件路径
         * @return
         */
        @PostMapping("/deleteFile")
        public String deleteFile(String fileName) {
            MinioClient minioClient = MinioClientConfig.getMinioClient();
            if (minioClient == null) {
                return "连接MinIO服务器失败";
            }
            boolean flag = minioUtil.deleteFile("data-enpower",fileName);
            return flag == true ? "删除成功" : "删除失败";
        }
     
     
    }

    七、调试结果

    1、 文件上传

    SpringBoot+MinIO melaksanakan penyimpanan objek

    minio上的文件

    SpringBoot+MinIO melaksanakan penyimpanan objek

    2、 文件下载

    SpringBoot+MinIO melaksanakan penyimpanan objek

    3、 文件删除

    SpringBoot+MinIO melaksanakan penyimpanan objek

    我们在minio上看看文件是否已删除

    SpringBoot+MinIO melaksanakan penyimpanan objek



    Atas ialah kandungan terperinci SpringBoot+MinIO melaksanakan penyimpanan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:Java学习指南. Jika ada pelanggaran, sila hubungi admin@php.cn Padam