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

相关推荐
想摆烂的不会研究的研究生6 分钟前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
毕设源码-郭学长22 分钟前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
梨落秋霜28 分钟前
Python入门篇【文件处理】
android·java·python
N***H48636 分钟前
springcloud springboot nacos版本对应
spring boot·spring·spring cloud
Java 码农43 分钟前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
哈库纳玛塔塔1 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
追逐时光者1 小时前
精选 10 款 .NET 开源免费、功能强大的 Windows 效率软件
后端·.net
追逐时光者1 小时前
一款开源、免费的 WPF 自定义控件集
后端·.net
S***q3772 小时前
Spring Boot管理用户数据
java·spring boot·后端
BD_Marathon2 小时前
SpringBoot——辅助功能之切换web服务器
服务器·前端·spring boot