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

相关推荐
WeiXin_DZbishe6 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
架构技术专栏6 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
vx_bisheyuange6 小时前
基于SpringBoot的体育商品推荐系统
spring boot·毕业设计
别动我齐刘海7 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
码事漫谈7 小时前
你让AI干的活,它可能只干了十分之一——而你根本看不出来
后端
Wx-bishekaifayuan7 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
Wx-bishekaifayuan8 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
code2cat8 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe8 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码8 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口