minio安装与上传文件

目录

1.安装(linux)

[1.1 下载](#1.1 下载)

[1.2 创建目录](#1.2 创建目录)

[1.3 赋予权限](#1.3 赋予权限)

[1.4 指定端口号后台启动](#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 创建目录

复制代码
mkdir /opt/minio
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配置

复制代码
# minio 参数配置
minio:
  endpoint: http://xxx:9000
  accessKey: minioadmin
  secretKey: minioadmin
  bucketName: test

逻辑

复制代码
@Autowired
private MinIoClientConfig minIoClientConfig;

@Autowired
private MinioClient minioClient;

    @Override
    public DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        String url=minIoClientConfig.getEndpoint();
        String bucketName="test";
        //获取文件名称
        String originalFilename = file.getOriginalFilename();
        //获取文件的类型
        //使用当前时间重新生成文件名,防止文件名称重复造成文件覆盖
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String fileNewName = System.currentTimeMillis() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        String fileName = sdf.format(d) + "&&" + fileNewName;
        //4.构建文件上传路径
        String filePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        //5.文件上传的路径
        String uploadUrl=filePath+"/"+fileName;
        //6.开始上传
        InputStream inputStream=null;
        try {
            inputStream=file.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                .object(uploadUrl)
                .contentType("image/jpeg")
                .bucket(bucketName)
                .stream(inputStream, inputStream.available(), -1)
                .build();

        minioClient.putObject(putObjectArgs);

        return DataResult.success(url+"/"+bucketName+"/"+uploadUrl);
    }

    @PostMapping("/upload")
    public DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        if(file==null||file.isEmpty()||file.getSize()==0){
            return DataResult.error(ResponseCode.FILE_IS_NOT_NULL.getMsg());
        }
        return userService.uploadImg(file);
    }

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

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

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

相关推荐
9523618 分钟前
SpringBoot统一功能处理
java·spring boot·后端
Lyyaoo.21 分钟前
优惠券秒杀业务分析
java·开发语言
消失的旧时光-194322 分钟前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
勿忘初心122125 分钟前
Java 国密 SM4 加密工具类实战(Hutool + BouncyCastle)|企业级数据加密 + 兼容 JDK8
java·数据安全·数据加密·后端开发·企业级开发·国密 sm4
庞轩px29 分钟前
第8篇:原子类与CAS底层原理——无锁并发的实现
java·cas·乐观锁·aba·无锁编程·自旋
rleS IONS39 分钟前
SpringBoot中自定义Starter
java·spring boot·后端
DevilSeagull1 小时前
MySQL(2) 客户端工具和建库
开发语言·数据库·后端·mysql·服务
苍煜1 小时前
慢SQL优化实战教学
java·数据库·sql
AI进化营-智能译站1 小时前
ROS2 C++开发系列16-智能指针管理传感器句柄|告别ROS2节点内存泄漏与野指针
java·c++·算法·ai
TeDi TIVE2 小时前
springboot和springframework版本依赖关系
java·spring boot·后端