• minio安装与上传文件


    目录

    1.安装(linux)

    1.1 下载

    1.2 创建目录

    1.3 赋予权限

    1.4 指定端口号后台启动

    2.访问

    2.1创建桶

    2.2修改权限

    3.springboot整合minio

    3.1上传文件


    1.安装(linux

    1.1 下载

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

    需要翻墙,可以先在本地下载,然后上传到服务器

    1.2 创建目录

    1. mkdir /opt/minio
    2. mkdir /opt/minio/data

    将下载好的minio文件上传到minio目录下。 

    1.3 赋予权限

    进入miniomulu

    chmod +x minio

    1.4 指定端口号后台启动

    nohup /opt/minio server --address 0.0.0.0:9000 /opt/minio/data  > /opt/minio/minio.log 2>&1 &

    如果用的是其他目录,则需要更改一下上面启动命令,将启动命令中的目录改为你自己的目录。

    注意开启9000和9001端口号。

    2.访问

    http://localhost:9000/

    服务器ip+端口

    账号密码都是:minioadmin

    2.1创建桶

    2.2修改权限

    需要本地访问的话需要改为public,不然会没有权限查看上传文件

    3.springboot整合minio

    3.1上传文件

    yml配置

    1. # minio 参数配置
    2. minio:
    3. endpoint: http://xxx:9000
    4. accessKey: minioadmin
    5. secretKey: minioadmin
    6. bucketName: test

    逻辑

    1. @Autowired
    2. private MinIoClientConfig minIoClientConfig;
    3. @Autowired
    4. private MinioClient minioClient;
    1. @Override
    2. public DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
    3. String url=minIoClientConfig.getEndpoint();
    4. String bucketName="test";
    5. //获取文件名称
    6. String originalFilename = file.getOriginalFilename();
    7. //获取文件的类型
    8. //使用当前时间重新生成文件名,防止文件名称重复造成文件覆盖
    9. Date d = new Date();
    10. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    11. String fileNewName = System.currentTimeMillis() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
    12. String fileName = sdf.format(d) + "&&" + fileNewName;
    13. //4.构建文件上传路径
    14. String filePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
    15. //5.文件上传的路径
    16. String uploadUrl=filePath+"/"+fileName;
    17. //6.开始上传
    18. InputStream inputStream=null;
    19. try {
    20. inputStream=file.getInputStream();
    21. } catch (IOException e) {
    22. e.printStackTrace();
    23. }
    24. PutObjectArgs putObjectArgs = PutObjectArgs.builder()
    25. .object(uploadUrl)
    26. .contentType("image/jpeg")
    27. .bucket(bucketName)
    28. .stream(inputStream, inputStream.available(), -1)
    29. .build();
    30. minioClient.putObject(putObjectArgs);
    31. return DataResult.success(url+"/"+bucketName+"/"+uploadUrl);
    32. }
    1. @PostMapping("/upload")
    2. public DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
    3. if(file==null||file.isEmpty()||file.getSize()==0){
    4. return DataResult.error(ResponseCode.FILE_IS_NOT_NULL.getMsg());
    5. }
    6. return userService.uploadImg(file);
    7. }

    之后调用接口的时候会直接返回一个路径,用那个路径就可以访问到自己上传的那个文件了。

    代码中还有一个问题,就是我使用@Value来调用yml中已经配置好了的bucketName, 但是却调用不成功,所以我是直接在逻辑代码处赋值桶的名字的。

    关于minio其他查询桶,删除桶等功能可以参考:【精选】分布式文件存储系统minio_minio数据库-CSDN博客

  • 相关阅读:
    【leetcode】有效的回文
    从初级软件测试,到高级软件测试的必经之路
    Redis 内存淘汰和过期删除策略
    nodejs 和 npm 版本对应关系
    FPGA【紫光语法】
    安徽某高校《数学建模》上机习题1选讲(建立范德蒙矩阵;解线性方程组)
    Maven POM:掌握项目对象模型的艺术
    Spring Security 注解AuthenticationPrincipal 失效排查
    linux查看日志文件内容命令sed、cat、tac、more、less、head、tail、echo 1、按时间查询
    条件随机场(CRF)极简原理与超详细代码解析
  • 原文地址:https://blog.csdn.net/Hubery_sky/article/details/133916509