MinIO使用,文件上传和下载

MinIO使用,文件上传和下载

中文文档:https://www.minio.org.cn/docs/minio/kubernetes/upstream/index.html

官网:https://min.io/

官网下载和安装:https://min.io/download#/kubernetes

安装

二进制文件安装

下载MinIO

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20231214185157.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm

启动MinIO

minio server ~/minio --console-address :9090

后台运行方式

nohup /www/minio/minio server --console-address :9090 /www/minio/data > /www/minio/data/minio.log 2>&1 &

默认账号密码为

用户名:minioadmin
密码:minioadmin

进入页面

在这里插入图片描述

docker安装

安装docker

如果本机有就不需要安装了

移出旧的docker

$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine

使用 yum 安装

# 安装依赖
sudo yum install -y yum-utils
# 配置阿里云镜像
sudo yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker Engine

sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

sudo systemctl enable docker
sudo systemctl start docker

如果想让里面镜像开机启动

docker run 指令中加入 --restart=always 
安装MinIo

拉去镜像

docker pull minio/minio

运行

#最近更新的命令
docker run -d \-p 9000:9000 \-p 9090:9090 \--name minio \-v /home/minio/data:/data \-e "MINIO_ROOT_USER=用户名" \-e "MINIO_ROOT_PASSWORD=密码" \minio/minio server /data --console-address ":9090"

之后访问9090端口;看到这个页面即为成功

在这里插入图片描述

页面展示

在这里插入图片描述

Java操作MinIO

创建SpringBoot项目,需要注意的是如果请求结束后想在浏览器中查看需要增加权限!!!

点击这个将其修改为公开

在这里插入图片描述

安装依赖

<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>JAVAVERSION</version>
</dependency>

设置最大上传大小-SpringBoot中

最好设置下,防止测试时候文件过大无法上传

server.port=8888
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB

如何使用

创建MinioClient
// 创建连接对象
MinioClient minioClient = MinioClient.builder().endpoint(uploadUrl).credentials("bunny", "02120212").build();
判断桶是否存在
 boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
判断桶是否存在,如果不存在则创建桶
// 判断桶是否存在,如果不存在则创建桶
if (!found) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
} else {System.out.println("桶已存在");
}
文件上传

其中contentType可以不填写,这个是指文件类型

// 文件上传
minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName)// 这里是文件名称.stream(file.getInputStream(), file.getSize(), -1)// 文件内容,文件大小// .contentType("video/mp4")// 文件的类型,可以不填写.build());
返回访问路径
// 返回路径名称---访问时用
return uploadUrl + "/" + bucketName + "/" + fileName;

在方法中注意使用try catch

实际操作

Controller中

设置请求路径,我这里是post请求

@Tag(name = "上传文件")
@RestController
public class UploadFileController {@Autowiredprivate UploadFIleService uploadFIleService;@Operation(summary = "Upload")@PostMapping("/uploadFile")public String uploadFile(@RequestParam("file") MultipartFile multipartFile) {return uploadFIleService.uploadFIle(multipartFile);}
}
Service中

创建接口和实现类

在这里插入图片描述

接口

package com.example.minio.service;import org.springframework.web.multipart.MultipartFile;public interface UploadFIleService {String uploadFIle(MultipartFile file);
}

实现类

package com.example.minio.service.impl;import com.example.minio.service.UploadFIleService;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;@Service
public class UploadFIleServiceImpl implements UploadFIleService {@Overridepublic String uploadFIle(MultipartFile file) {String uploadUrl = "http://192.168.31.140:9000";// 上传路径地址String bucketName = "bunny-test";// 桶的名称String fileName = file.getOriginalFilename();// 文件名称try {// 创建连接对象MinioClient minioClient = MinioClient.builder().endpoint(uploadUrl).credentials("bunny", "02120212").build();// 判断桶是否存在boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());// 判断桶是否存在,如果不存在则创建桶if (!found) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());} else {System.out.println("桶已存在");}// 文件上传minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName)// 这里是文件名称.stream(file.getInputStream(), file.getSize(), -1)// 文件内容,文件大小// .contentType("video/mp4")// 文件的类型,可以不填写.build());// 返回路径名称---访问时用return uploadUrl + "/" + bucketName + "/" + fileName;} catch (Exception e) {throw new RuntimeException(e);}}
}

测试请求

需要注意的是如果请求结束后想在浏览器中查看需要增加权限!!!

点击这个将其修改为公开

在这里插入图片描述

之后访问服务器

在这里插入图片描述

文件中已包含,这个桶没有创建,但是不存在自动创建了一个

在这里插入图片描述

可以访问

     throw new RuntimeException(e);}}

}


## 测试请求 需要注意的是如果请求结束后想在浏览器中查看需要增加权限!!!点击这个将其修改为公开[外链图片转存中...(img-nequIWuJ-1702822622971)]之后访问服务器[外链图片转存中...(img-0Zie22dn-1702822622971)]文件中已包含,这个桶没有创建,但是不存在自动创建了一个[外链图片转存中...(img-aegMV599-1702822622971)]可以访问![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/069326d2bb7142ee8861f8a66ab8f3cc.png)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/283069.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

55 代码审计-JAVA项目注入上传搜索或插件挖掘

目录 必备知识点演示案例:简易Demo段SQL注入及预编译IDEA审计插件FindBugs安装使用Fortify_SCA代码自动审计神器使用Ofcms后台SQL注入-全局搜索关键字Ofcms后台任意文件上传-功能点测试 涉及资源&#xff1a; 我们一般针对java项目&#xff0c;进行漏洞分析的话&#xff0c;主要…

Python 函数与参数传递

一、函数的定义和调用 在python中&#xff0c;如果经常重复使用一些代码&#xff0c;可以把它们创建为一个函数&#xff0c;这可以大大减少编程工作量。用户创建的函数叫做自定义函数。定义函数时要使用def关键字&#xff0c;格式如下&#xff1a; def 函数名&#xff08;参数…

Linux+Docker+Gitee+Jenkins自动化部署.NET Core服务

目录 一、安装Jenkins 1、跟新yum包 2、查询镜像 3、拉取镜像 4、创建Jenkins工作目录&#xff0c;并将容器内目录挂载到此目录上 5、启动Jenkins容器 二、Jenkins配置 1、Jenkins安装gitee码云插件 2、创建私人令牌 3、Jenkins添加全局凭据 4、系统配置 三、构建任…

数据安全传输基础设施平台(一)

1引言 1.1项目简介 数据安全传输基础设置平台项目&#xff08;简称&#xff0c;数据传输平台&#xff09;&#xff0c;是一款基础设施类项目&#xff0c;为集团、企业信息系统的提供统一、标准的信息安全服务&#xff1b;解决企业和企业之间&#xff0c;集团内部信息数据的传…

C# WPF上位机开发(函数运行时间分析)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 上位机除了基本功能和稳定性之外&#xff0c;还有一个要注意的就是运行效率的问题。如果我们想提高软件的运行效率&#xff0c;单位时间做更多的工…

12.5,12.15AVL树更新,定义,插入

定义平衡因子为右子树高度减去左子树高度 AVL树插入分为两步&#xff1a; 按照二叉搜索树的方式插入新节点调整平衡因子 对于平衡因子的调整&#xff0c;在插入之前&#xff0c;所有节点的平衡因子分为三种情况&#xff1a;0&#xff0c;1&#xff0c;-1插入后&#xff0c;新…

手机上的python怎么运行,python在手机上怎么运行

大家好&#xff0c;本文将围绕python程序如何在手机端运行展开说明&#xff0c;python程序如何在手机上运行是一个很多人都想弄明白的事情&#xff0c;想搞清楚手机上的python怎么运行需要先了解以下几个事情。 如何用手机编程Python&#xff1f; 1.QPython3&#xff1a;这是一…

华为eNSP点到点IP隧道实验GRE--VPN

实验还原 配置如下 AR1 [Huawei]un in en [Huawei]sys AR1 [AR1]inte g0/0/0 [AR1-GigabitEthernet0/0/0]ip ad 192.168.1.254 24 [AR1-GigabitEthernet0/0/0]inte g0/0/1 [AR1-GigabitEthernet0/0/1]ip ad 192.1.1.1 24 [AR1-GigabitEthernet0/0/1]ospf [AR1-ospf-1]ar 1 […

Node.js多版本管理切换

nodejs多版本管理软件&#xff1a;https://github.com/coreybutler/nvm-windows 安装方法 https://www.jianshu.com/p/9ba4cd0706da

多层记忆增强外观-运动对齐框架用于视频异常检测 论文阅读

MULTI-LEVEL MEMORY-AUGMENTED APPEARANCE-MOTION CORRESPONDENCE FRAMEWORK FOR VIDEO ANOMALY DETECTION 论文阅读 摘要1.介绍2.方法2.1外观和运动对其建模2.2.记忆引导抑制模块2.3. Training Loss2.4. Anomaly Detection 3.实验与结果4.结论 论文标题&#xff1a;MULTI-LEVE…

【每日一题】【12.17】746.使用最小花费爬楼梯

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 1.题目链接 746. 使用最小花费爬楼梯https://leetcode.cn/problems/min-cost-climbing-stairs/ 2.题目详情 今天的每日一题又…

数据库交付运维高级工程师-腾讯云TDSQL

数据库交付运维高级工程师-腾讯云TDSQL上机指导&#xff0c;付费指导&#xff0c;暂定99