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博客

相关推荐
还在忙碌的吴小二2 分钟前
Harness 最佳实践:Java Spring Boot 项目落地 OpenSpec + Claude Code
java·开发语言·spring boot·后端·spring
风吹迎面入袖凉2 分钟前
【Redis】Redis的五种核心数据类型详解
java·redis
三分恶4 分钟前
支付江湖路—第一章:支付溯源——从贝壳到比特
后端
夕除10 分钟前
javaweb--02
java·tomcat
ailvyuanj14 分钟前
2026年Java AI开发实战:Spring AI完全指南
java
张np27 分钟前
java进阶-Dubbo
java·dubbo
汽车仪器仪表相关领域28 分钟前
NHFID-1000型非甲烷总烃分析仪:技术破局,重构固定污染源监测新体验
java·大数据·网络·人工智能·单元测试·可用性测试·安全性测试
武子康30 分钟前
大数据-264 实时数仓-MySQL Binlog配置详解:从原理到实践|数据恢复与主从复制实战
大数据·hadoop·后端
一叶飘零_sweeeet31 分钟前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java·aqs
倾颜34 分钟前
接入 MCP,不一定要先平台化:一次 AI Runtime 的实战取舍
前端·后端·mcp