定制开发minio安装部署及使用

一、定制开发服务器安装

1.进行下载

下载地址:

GNU/Linux

https://dl.min.io/server/minio/release/linux-amd64/minio

2.新建minio安装目录,定制开发执行如下命令

mkdir -p /home/minio/data

定制开发把文件上传到安装目录后,执行:

  1. chmod +x minio //给予权限
  2. export MINIO_ACCESS_KEY=minioadmin //创建账号
  3. export MINIO_SECRET_KEY=minioadmin //创建密码
  4. ./minio server /home/minio/data //启动

 后台启动,定制开发并打印日志

nohup ./minio server /home/minio/data > /home/minio/data/minio.log &

定制开发默认的端口为:9000

定制开发自定义端口方式:自定义启动端口号以及控制台端口号,不设置则控制台会自动配置其他端口号,非常不方便

nohup ./minio server  --address :9000 --console-address :9001 /home/minio/data > /home/minio/data/minio.log &

查看状态

ps -ef|grep minio

二、进行访问,并设置桶

1.访问

        地址:http://127.0.0.1:9000

 输入账号密码后:

进行创建桶,名字自取,创建完成后服务器home/minio/data下也会创建这个文件目录

 进行设置:

必须将规则设置成readwrite ,才可进行读取文件,否则只存或者只能读。

 

 三、springboot进行实现

1.引入依赖

  1. <!-- minio 相关依赖 -->
  2. <dependency>
  3. <groupId>io.minio</groupId>
  4. <artifactId>minio</artifactId>
  5. <version>3.0.10</version>
  6. </dependency>
  7. <!-- alibaba的fastjson -->
  8. <dependency>
  9. <groupId>com.alibaba</groupId>
  10. <artifactId>fastjson</artifactId>
  11. <version>1.2.51</version>
  12. </dependency>
  13. <!-- thymeleaf模板引擎 -->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  17. </dependency>

 2.在 application.yml 文件中加入 MinIO 服务器的相关信息

  1. # minio 文件存储配置信息
  2. minio:
  3. endpoint: http://127.0.0.1:9000
  4. accesskey: minioadmin
  5. secretKey: minioadmin

3.创建实体类

这一步,我们将配置文件中 minio 的配置信息通过注解的方式注入到 MinioProp 这个实体中,方便后面我们使用

  1. import lombok.Data;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. /**
  5. * minio 属性值
  6. */
  7. @Data
  8. @Component
  9. @ConfigurationProperties(prefix = "minio")
  10. public class MinioProp {
  11. /**
  12. * 连接url
  13. */
  14. private String endpoint;
  15. /**
  16. * 用户名
  17. */
  18. private String accesskey;
  19. /**
  20. * 密码
  21. */
  22. private String secretKey;
  23. }

4、创建核心配置类

通过注入 MinIO 服务器的相关配置信息,得到 MinioClient 对象,我们上传文件依赖此对象

  1. import io.minio.MinioClient;
  2. import io.minio.errors.InvalidEndpointException;
  3. import io.minio.errors.InvalidPortException;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. /**
  9. * minio 核心配置类
  10. */
  11. @Configuration
  12. @EnableConfigurationProperties(MinioProp.class)
  13. public class MinioConfig {
  14. @Autowired
  15. private MinioProp minioProp;
  16. /**
  17. * 获取 MinioClient
  18. *
  19. * @return
  20. * @throws InvalidPortException
  21. * @throws InvalidEndpointException
  22. */
  23. @Bean
  24. public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
  25. return new MinioClient(minioProp.getEndpoint(), minioProp.getAccesskey(), minioProp.getSecretKey());
  26. }
  27. }

5、上传工具类

  1. import com.alibaba.fastjson.JSONObject;
  2. import com.zyxx.email.common.redis.RedisUtil;
  3. import com.zyxx.email.utils.DateUtils;
  4. import io.minio.MinioClient;
  5. import lombok.SneakyThrows;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Component;
  9. import org.springframework.web.multipart.MultipartFile;
  10. @Slf4j
  11. @Component
  12. public class MinioUtils {
  13. @Autowired
  14. private MinioClient client;
  15. @Autowired
  16. private MinioProp minioProp;
  17. /**
  18. * 创建bucket
  19. *
  20. * @param bucketName bucket名称
  21. */
  22. @SneakyThrows
  23. public void createBucket(String bucketName) {
  24. if (!client.bucketExists(bucketName)) {
  25. client.makeBucket(bucketName);
  26. }
  27. }
  28. /**
  29. * 上传文件
  30. *
  31. * @param file 文件
  32. * @param bucketName 存储桶
  33. * @return
  34. */
  35. public JSONObject uploadFile(MultipartFile file, String bucketName) throws Exception {
  36. JSONObject res = new JSONObject();
  37. res.put("code", 0);
  38. // 判断上传文件是否为空
  39. if (null == file || 0 == file.getSize()) {
  40. res.put("msg", "上传文件不能为空");
  41. return res;
  42. }
  43. try {
  44. // 判断存储桶是否存在
  45. createBucket(bucketName);
  46. // 文件名
  47. String originalFilename = file.getOriginalFilename();
  48. // 新的文件名 = 存储桶名称_时间戳.后缀名
  49. String fileName = bucketName + "_" + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
  50. // 开始上传
  51. client.putObject(bucketName, fileName, file.getInputStream(), file.getContentType());
  52. res.put("code", 1);
  53. res.put("msg", minioProp.getEndpoint() + "/" + bucketName + "/" + fileName);
  54. return res;
  55. } catch (Exception e) {
  56. log.error("上传文件失败:{}", e.getMessage());
  57. }
  58. res.put("msg", "上传失败");
  59. return res;
  60. }
  61. }

6.controller接口

  1. import com.alibaba.fastjson.JSONObject;
  2. import com.zyxx.email.common.minio.MinioUtils;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.*;
  6. import org.springframework.web.multipart.MultipartFile;
  7. import javax.servlet.http.HttpServletRequest;
  8. @Controller
  9. public class MinioController {
  10. @Autowired
  11. private MinioUtils minioUtils;
  12. /**
  13. * 上传
  14. *
  15. * @param file
  16. * @param request
  17. * @return
  18. */
  19. @PostMapping("/upload")
  20. @ResponseBody
  21. public String upload(@RequestParam(name = "file", required = false) MultipartFile file, HttpServletRequest request) {
  22. JSONObject res = null;
  23. try {
  24. res = minioUtils.uploadFile(file, "product");
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. res.put("code", 0);
  28. res.put("msg", "上传失败");
  29. }
  30. return res.toJSONString();
  31. }
  32. }

测试

通过网址进行访问:

PostMan进行测试上传;

 

 

删除文件:

  1. //文件删除
  2. @DeleteMapping
  3. public String delete(String name) {
  4. try {
  5. MinioClient minioClient = new MinioClient(ENDPOINT, ACCESSKEY, SECRETKEY);
  6. minioClient.removeObject(BUCKETNAME, name);
  7. } catch (Exception e) {
  8. return "删除失败"+e.getMessage();
  9. }
  10. return "删除成功";
  11. }

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发