您的位置:首页 > 游戏 > 游戏 > 京津冀协同发展现状_app界面设计模板图_石家庄seo扣费_兰州百度推广的公司

京津冀协同发展现状_app界面设计模板图_石家庄seo扣费_兰州百度推广的公司

2025/4/18 13:54:35 来源:https://blog.csdn.net/qq_45480682/article/details/145864145  浏览:    关键词:京津冀协同发展现状_app界面设计模板图_石家庄seo扣费_兰州百度推广的公司
京津冀协同发展现状_app界面设计模板图_石家庄seo扣费_兰州百度推广的公司

文章目录

  • 配置
    • 1. 部署MinIO服务
    • 2. 整合SpringBoot
  • 功能实现
    • 1. 文件上传
    • 2. 文件下载
  • 总结

配置

1. 部署MinIO服务

这里以docker为例:

  1. 安装minio命令
    docker run -p 9000:9000 -p 9001:9001 \
    --name minio \
    -v /path/to/data:/data \
    -e "MINIO_ROOT_USER=minioadmin" \
    -e "MINIO_ROOT_PASSWORD=minioadmin" \
    minio/minio server /data --console-address ":9001"
    
    表示MinIO 的 API 服务默认运行在 9000 端口,并且映射到容器的9000端口
    MinIO 的控制台(Web UI)默认运行在 9001 端口。
    注意:服务器部署记得开放9000和9001端口。
  2. 登录MinIO的ui控制台“ip+端口号”
    得到如下界面,输入配置的用户名和密码,也就是docker run命令中的
    -e "MINIO_ROOT_USER=minioadmin" \
    -e "MINIO_ROOT_PASSWORD=minioadmin" \
    
    在这里插入图片描述

2. 整合SpringBoot

  1. maven依赖:
    <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.14</version>
    </dependency>
    
  2. application.yaml
    minio:endpoint: http://你部署minio服务的ip地址:9000 # MinIO 服务器地址access-key: minioadmin          # 访问密钥secret-key: minioadmin          # 秘密密钥bucket: test            # 默认存储桶名称
    
  3. MinIO配置类
    import io.minio.MinioClient;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;@Configuration
    public class MinioConfig {@Value("${minio.endpoint}")private String endpoint;@Value("${minio.access-key}")private String accessKey;@Value("${minio.secret-key}")private String secretKey;@Beanpublic MinioClient minioClient() {return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();}
    }
    

功能实现

以为文件上传、下载为例:

1. 文件上传

  1. controller层

    @RestController
    @RequestMapping("/file/")
    public class FileController {@Autowiredprivate FileService fileService;/*** 文件上传* @param file* @param fileName*/@PostMapping("upload")public Result uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("fileName") String fileName){String msg = fileService.uploadFile(file, fileName);return Result.success(msg);}
    
  2. service层

    public interface FileService {String uploadFile(MultipartFile file, String fileName);
    }
    
    @Service
    public class FileServiceImpl implements FileService {@Autowiredprivate MinioClient minioClient;@Value("${minio.bucket}")private String bucketName;/*** 文件上传* @param file 需要上传的文件* @param fileName 文件在 minio 中存储的名称*/@Overridepublic String uploadFile(MultipartFile file, String fileName) {try {//MultipartFile 转换为 InputStream,以便 MinIO 客户端可以读取文件内容InputStream inputStream = file.getInputStream();//将文件上传到 MinIO 服务器minioClient.putObject(PutObjectArgs.builder().bucket(bucketName)//文件存储的存储桶名称.object(fileName).stream(inputStream, file.getSize(), -1)//文件大小, partSize设置为 -1,MinIO 会使用默认的分块大小(通常是 5MB)进行上传。.contentType(file.getContentType())//文件的 MIME 类型.build());}catch (Exception e){return "文件上传失败";}return "文件上传成功";}
    }
    
  3. 测试结果:
    在这里插入图片描述
    在ui界面中可以查看到上传的文件:
    在这里插入图片描述

2. 文件下载

  1. controller层:

    @RestController
    @RequestMapping("/file/")
    public class FileController {@Autowiredprivate FileService fileService;/*** 文件下载* @param fileName* @return*/@GetMapping("download/{fileName}")public Result downloadFile(@PathVariable String fileName, HttpServletResponse response) throws IOException {InputStream inputStream = fileService.downloadFile(fileName);response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment; fileName" + fileName);IOUtils.copy(inputStream, response.getOutputStream());response.flushBuffer();return Result.success();}
    }
    
  2. service层:

    public interface FileService {InputStream downloadFile(String fileName);
    }
    
    @Service
    public class FileServiceImpl implements FileService {@Autowiredprivate MinioClient minioClient;@Value("${minio.bucket}")private String bucketName;@Overridepublic InputStream downloadFile(String fileName) {//从 MinIO 对象存储中读取的数据InputStream inputStream = null;try {inputStream = minioClient.getObject(GetObjectArgs.builder().object(fileName)//文件名称.bucket(bucketName)//文件所在存储桶的位置.build());} catch (Exception e) {return null;}return inputStream;}
    
  3. 测试结果:
    便于测试,我这里下载方法是显示下载文件的内容,结果正确。
    在这里插入图片描述

总结

与MQ类似,需要先部署服务,也有相应的图形化界面便于查看。写好配置文件,使用MinIO提供好的方法类即可。

以上为个人学习分享,如有问题,欢迎指出:)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com