我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MinIO实现文件上传存储

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MinIO实现文件上传存储

MinIO

目录

MinIO概念

  1. MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。它与 Amazon S3 云存储服务 API 兼容。使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
  2. MinIO是高性能对象存储,什么是对象存储(Object Storage Service),对象存储是支持海量用户远程访问的无限容量廉价存储系统,即是存储系统。
  3. 它由桶(bucket,对应Windows下的文件夹),组成目录结构,桶中直接存放对象(Object,对应Windwos下的文件),桶中不能再创建桶,但是能创建文件夹。

MinIO下载安装启动

访问官网:https://docs.min.io/
进入官网点击右上角Download

下载

在这里插入图片描述
点击Windows下载服务端

在这里插入图片描述

安装

将MinIO.exe 拷贝到自己的目录下去,并创建一个data目录

在这里插入图片描述

启动

通过命令行启动Minio :
minio server ./data

在这里插入图片描述
启动完成后,可以看到访问的路径:http://127.0.0.1:9000

在这里插入图片描述
使用提供的账号密码进行登录

​ 账号:minioadmin

​ 密码:minioadmin

MinIO实现上传文件

导入maven坐标

     io.minio     minio     8.4.3

在application文件添加配置

# MinIO配置minio:  endpoint: 127.0.0.1  port: 9000  accessKey: minioadmin  secretKey: minioadmin  secure: false  bucketName: "demo"  configDir: "/data/excel"

实现代码

@Data@Component@ConfigurationProperties(prefix = "minio")public class MinioConfig {    private final static String HTTP = "http://";    //endPoint是一个URL,域名,IPv4或者IPv6地址    private String endpoint;    //TCP/IP端口号    private int port;    //accessKey类似于用户ID,用于唯一标识你的账户    private String accessKey;    //secretKey是你账户的密码    private String secretKey;    //如果是true,则用的是https而不是http,默认值是true    private Boolean secure;    //默认存储桶    private String bucketName;}
public class AjaxResult extends HashMap{    private static final long serialVersionUID = 1L;        public static final String CODE_TAG = "code";        public static final String MSG_TAG = "msg";        public static final String DATA_TAG = "data";        public AjaxResult()    {    }        public AjaxResult(int code, String msg)    {        super.put(CODE_TAG, code);        super.put(MSG_TAG, msg);    }        public AjaxResult(int code, String msg, Object data)    {        super.put(CODE_TAG, code);        super.put(MSG_TAG, msg);        if (StringUtils.isNotNull(data))        {            super.put(DATA_TAG, data);        }    }        public static AjaxResult success()    {        return AjaxResult.success("操作成功");    }        public static AjaxResult success(Object data)    {        return AjaxResult.success("操作成功", data);    }        public static AjaxResult success(String msg)    {        return AjaxResult.success(msg, null);    }        public static AjaxResult success(String msg, Object data)    {        return new AjaxResult(HttpStatus.SUCCESS, msg, data);    }        public static AjaxResult error()    {        return AjaxResult.error("操作失败");    }        public static AjaxResult error(String msg)    {        return AjaxResult.error(msg, null);    }        public static AjaxResult error(String msg, Object data)    {        return new AjaxResult(HttpStatus.ERROR, msg, data);    }        public static AjaxResult error(int code, String msg)    {        return new AjaxResult(code, msg, null);    }}
@RestControllerpublic class CommonController extends BaseController {    private static final Logger log = LoggerFactory.getLogger(CommonController.class);    @Autowired    private ISysFileService fileService;        @PostMapping("/common/upload")    public AjaxResult uploadFile(MultipartFile file){        try{            // 上传文件路径            return fileService.upload(file);        }catch (Exception e){            return AjaxResult.error(e.getMessage());        }    }}
public interface ISysFileService {AjaxResult upload(MultipartFile file);}
@Service@Slf4jpublic class SysFileServiceImpl implements ISysFileService{@AutowiredMinioConfig minioConfig;@Overridepublic AjaxResult upload(MultipartFile file) {InputStream inputStream = null;//创建Minio的连接对象MinioClient minioClient = getClient();//获取存储桶String bucketName = minioConfig.getBucketName();try {inputStream = file.getInputStream();// Make bucketName bucket if not exist.boolean found =minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!found) {// Make a new bucket called bucketName.minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());} else {log.info("Bucket " +"["+bucketName+ "]"+" already exists.");}//Uploads given stream as object in bucket.String oldFileName = file.getOriginalFilename();String objectName = new SimpleDateFormat("yyyy/MM/dd/").format(new Date())+IdUtils.simpleUUID()+oldFileName.substring(oldFileName.lastIndexOf("."));minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(inputStream, file.getSize(), -1).contentType(file.getContentType()).build());AjaxResult ajax = AjaxResult.success();ajax.put("fileName", "/"+bucketName+"/"+objectName);ajax.put("url", "http://"+minioConfig.getEndpoint()+":"+minioConfig.getPort()+"/"+minioConfig.getBucketName()+"/"+objectName);return ajax;}catch(Exception e){e.printStackTrace();return AjaxResult.error("上传失败");}finally {//防止内存泄漏if (inputStream != null) {try {inputStream.close(); // 关闭流} catch (IOException e) {log.debug("inputStream close IOException:" + e.getMessage());}}}}private MinioClient getClient(){MinioClient minioClient =MinioClient.builder().endpoint("http://"+minioConfig.getEndpoint()+":"+ minioConfig.getPort()).credentials(minioConfig.getAccessKey(),minioConfig.getSecretKey()).build();return minioClient;}}

响应数据格式

{"msg":"操作成功","fileName":"/demo/2022/10/14/efcb6266efba42a4b35344181964be36.pdf","code":200,"url":"http://127.0.0.1:9000/demo/2022/10/14/efcb6266efba42a4b35344181964be36.pdf"}

到此,上传文件到MinIO服务器就完成了。

来源地址:https://blog.csdn.net/m0_52388228/article/details/127319556

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MinIO实现文件上传存储

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python怎么实现上传Minio文件

本篇内容介绍了“Python怎么实现上传Minio文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!环境依赖安装minio以及oss2依赖p
2023-06-25

Springboot怎么集成minio实现文件存储

本篇内容主要讲解“Springboot怎么集成minio实现文件存储”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot怎么集成minio实现文件存储”吧!MinIO 是一款基于G
2023-06-29

SpringBoot怎么整合Minio文件存储

这篇“SpringBoot怎么整合Minio文件存储”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么整
2023-06-29

minio分布式存储上传很慢怎么解决

minio分布式存储上传慢可能有多种原因,可以尝试以下几种解决方案:网络问题:确保网络连接稳定,上传过程中没有网络波动或者丢包问题。可以尝试使用不同的网络环境上传文件,看是否有改善。节点负载:检查minio各节点的负载情况,确保节点之间的负
minio分布式存储上传很慢怎么解决
2024-04-09

docker怎么安装minio及实现文件上传、删除、下载

这篇文章主要介绍“docker怎么安装minio及实现文件上传、删除、下载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker怎么安装minio及实现文件上传、删除、下载”文章能帮助大家解决问
2023-07-05

如何在Alma Linux上实现安全的文件传输和存储

在Alma Linux上实现安全的文件传输和存储可以通过以下几种方式来实现:使用SSH(Secure Shell):SSH是一种加密通信协议,可以在网络上安全地传输文件。您可以使用SCP(Secure Copy)或SFTP(Secure F
如何在Alma Linux上实现安全的文件传输和存储
2024-04-24

Spring boot实现文件上传实例(多文件上传)

文件上传主要分以下几个步骤:(1)新建maven java project;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录