Mac安装MINIO服务器实现本地上传和下载服务

0.MINIO学习文档

Minio客户端mc使用 | Elibaron学习笔记

1.Mac安装MINIO

中文官方网址:MinIO下载和安装 | 用于创建高性能对象存储的代码和下载内容

(1) brew 安装

brew install minio/stable/minio

(2)安装完成,执行brew info minio 

(3)启动minio服务

/opt/homebrew/opt/minio/bin/minio server --certs-dir\=/opt/homebrew/etc/minio/certs --address\=:9000 /opt/homebrew/var/minio

参数解释:

  • –certs-dir=/opt/homebrew/etc/minio/certs  配置文件目录
  • –address=:9000 使用的端口
  • /opt/homebrew/var/minio 存储数据目录 

Ctrl+c关闭服务器。

(4)启动成功。

  • 访问 http://127.0.0.1:9000 或者 http://127.0.0.1:52301
  • RootUser: minioadmin
  • RootPass: minioadmin

2. 利用本地MINIO实现文件上传功能

(1)首先先建一个Buckets

(2) 然后在nacos中配置你的oss-minio(这种方法比较通用)

oss:provider: MINIO: ossType: minioaccessKey: minioadminsecretKey: minioadminendpoint: 127.0.0.1port: 9000isHttps: falsebucket-name: self-safe     

accessKey和secretKey可以在你登录minio的时候就会看到:

 你也可以在你代码里写死,但是这样不通用:

try (InputStream inputStream = new FileInputStream(tempFile)) {// 上传文件到 MinIOlog.info("Uploading file to MinIO, fileName: {}", fileName);MinioClient minioClient = MinioClient.builder()// MinIO 服务地址.endpoint("http://localhost:9000")// MinIO 访问密钥.credentials("minioadmin", "minioadmin").build();minioClient.putObject(PutObjectArgs.builder()// 替换为你的 MinIO Bucket 名称.bucket("self-safe")// 上传的文件名.object(fileName)// 文件流和文件大小.stream(inputStream, tempFile.length(), -1)// 文件类型.contentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet").build());

(3)调用上传文件工具类ossUtils.uploadFile,文件就会被自动上传到你自己本地的minio了

UploadResult uploadResult = ossUtils.uploadFile(inputStream, exportExcelName + ".xlsx");

(4) 把数据写入excel并上传到minio总体代码

 private <T extends DamExcelWrite> void exportCustomerRiskMonitoring(String fileSid,Function<Integer, List<T>> exportFunction,Class<T> clazz,List<String> sheetNames,String exportExcelName) {// 获取下载状态信息FileDownloadStatus fileStatus = fileDownloadStatusService.getDownloadStatusById(fileSid);DateTime processTime = DateUtil.date();DateTime expireTime = DateUtil.offsetDay(processTime, fileExpireTime);fileStatus.setExpireTime(expireTime);String fileName = exportExcelName + "-" + fileSid;File tempFile;try {tempFile = File.createTempFile(fileName, ExcelTypeEnum.XLSX.getValue());} catch (Exception e) {log.error("create file error, stop export, fileName: {}", fileName);return;}try (OutputStream outputStream = new FileOutputStream(tempFile)) {log.info("Starting to write Excel file");// 创建模板文件ExcelWriter excelWriter = EasyExcel.write(outputStream, clazz).inMemory(true).excelType(ExcelTypeEnum.XLSX).build();// 创建并配置SheetWriteSheet writeSheet = EasyExcel.writerSheet(sheetNames.get(0)).head(clazz).build();// 分页写入数据int pageIndex = 1;while (true) {log.info("Fetching data for pageIndex: {}", pageIndex);List<T> pageData = exportFunction.apply(pageIndex);if (pageData == null || pageData.isEmpty()) {log.warn("No data found for pageIndex: {}, ending write loop.", pageIndex);break; // 数据为空,退出循环}log.info("Writing data for pageIndex: {}, data size: {}", pageIndex, pageData.size());excelWriter.write(pageData, writeSheet);pageIndex++;}log.info("Finishing ExcelWriter to finalize write operation.");excelWriter.finish();} catch (Exception e) {log.error("Error during Excel export, fileSid: {}", fileSid, e);fileStatus.setGenerateStatus("2");fileStatus.setMsg("Error during export: " + e.getMessage());}try (InputStream inputStream = new FileInputStream(tempFile)) {// 上传文件log.info("Starting upload for file: {}", fileName);long start = System.currentTimeMillis();// 将文件流上传UploadResult uploadResult = ossUtils.uploadFile(inputStream, sheetNames + ".xlsx");log.info("Upload finished, cost: {}, file: {}", System.currentTimeMillis() - start, fileName);// 更新文件状态为成功fileStatus.setGenerateStatus("1");fileStatus.setMsg("success");saveExportRecord("CustomerRiskMonitoringExport", fileSid, processTime, expireTime, uploadResult);} catch (Exception e) {log.error("Error during file upload, fileSid: {}", fileSid, e);fileStatus.setGenerateStatus("2");fileStatus.setMsg("Error during upload: " + e.getMessage());} finally {if (tempFile.exists()) {tempFile.delete();}}// 更新下载状态log.info("Updating fileDownloadStatus: {}", fileStatus);fileDownloadStatusService.updateDownloadStatus(fileStatus);}

(5)检查文件是否被上传成功,miniou会按照年月日分好文件夹

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

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

相关文章

墨者学院-登录密码重置漏洞分析

声明&#xff01; 文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人无关&#xff0c;切勿触碰法律底线&#xff0c;否则后果自负&#xff01;&#xff01;&#xff01;&#xff01; 目录标题 前言解题过程总结 前言 在实际渗透测试中&#xff0c;登…

qt QPauseAnimation详解

1、概述 QPauseAnimation是Qt框架中的一个类&#xff0c;专门用于在动画序列中添加暂停效果。它继承自QAbstractAnimation&#xff0c;允许在动画组或动画序列中指定一个时间段的暂停。这对于创建复杂的动画序列非常有用&#xff0c;可以让动画在特定时刻暂停并保持状态。通过…

【热门主题】000076 探索单片机的奥秘:原理、编程与应用全解析

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

SpringMVC(1)

前言 1. SpringMVC简介 2. 入门案例 第一步导入坐标&#xff0c;SpringMVC和servlet 这样其实就把我们要用的Spring相关的都用上了 第三步就是加载这个bean 写配置类 第四步做一个Tomcat容器启动的配置 还要加上Tomcat插件 我们在创建一个快捷方式 注意由于我的JDK版本高…

jenkins+github+springboot自动部署

背景&#xff1a; 最近看流水线有点意思&#xff0c;就说自己也搞一套。 预期效果&#xff1a; idea提交代码后&#xff0c;GitHub接收&#xff0c;jenkins自动部署。【后续加个自动部署时的代码检查、单元测试、安全测试、sonarqube】 思路分析: idea上的spring代码push到gi…

RabbitMQ 客户端 连接、发送、接收处理消息

RabbitMQ 客户端 连接、发送、接收处理消息 一. RabbitMQ 的机制跟 Tcp、Udp、Http 这种还不太一样 RabbitMQ 服务&#xff0c;不是像其他服务器一样&#xff0c;负责逻辑处理&#xff0c;然后转发给客户端 而是所有客户端想要向 RabbitMQ服务发送消息&#xff0c; 第一步&a…

MSSQL2022的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序

MSSQL2022导入Excel的一个错误&#xff1a;未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序 一、导入情况二、问题发现三、问题解决 最近在安装新版SQLServer SSMS 2022后&#xff0c;每次导入Excel都会出现错误提示&#xff1a;未在本地计算机上注册“Microsoft.AC…

GPT 1到4代的演进笔记

1. GPT-1 标题是 Improving Language Understanding by Generative Pre-Training. 发表于 2018.02, 比 bert(发布于 2018.10) 早了半年. 1.1 动机 困难:NLU 任务是多样的, 有 {textual entailment, question answering, semantic similarity assessment, document classifica…

【06】 MySQL 数据表的约束都有哪些?理解与实践

文章目录 1. 主键约束&#xff08;Primary Key&#xff09;2. 外键约束&#xff08;Foreign Key&#xff09;3. 唯一约束&#xff08;Unique&#xff09;4. 非空约束&#xff08;Not Null&#xff09;5. 默认值约束&#xff08;Default&#xff09;6. 检查约束&#xff08;Chec…

element-ui的下拉框报错:Cannot read properties of null (reading ‘disabled‘)

在使用element下拉框时&#xff0c;下拉框option必须点击输入框才关闭&#xff0c;点击其他地方报错&#xff1a;Cannot read properties of null (reading disabled) 造成报错原因&#xff1a;项目中使用了el-dropdown组件&#xff0c;但是在el-dropdown里面没有定义el-dropdo…

工业—使用Flink处理Kafka中的数据_ChangeRecord1

使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,当某设备 30 秒状态连续为 “ 预警 ” ,输出预警 信息。当前预警信息输出后,最近30

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL&#xff08;丹摩智算&#xff09; 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…

Java程序调kubernetes(k8s1.30.7)core API简单示例,并解决403权限验证问题,即何进行进行权限授权以及验证

简单记录问题 一、问题描述 希望通过Java程序使用Kubernetes提供的工具包实现对Kubernetes集群core API的调用&#xff0c;但是在高版本上遇见权限验证问题4xx。 <dependency><groupId>io.kubernetes</groupId><artifactId>client-java</artifact…

微信小程序wx.showShareMenu配置全局分享功能

在app.js文件中配置如下即可&#xff1a; onLaunch() {//开启分享功能this.overShare()},/*** 开启朋友圈分享功能* 监听路由切换/自动执行*/overShare() {wx.onAppRoute((res) > {// console.log(route, res)let pages getCurrentPages()let view pages[pages.length - …

生信软件开发1 - 设计一个简单的Windwos风格的GUI报告软件

1. 安装基础库 使用Windows 11标题样式和主题自定义UI窗口库pywinstyles&#xff08;github: https://github.com/Akascape/py-window-styles&#xff09;&#xff0c;结合python自带tkinter库设计一个报告GUI软件。 pip install pywinstyles2. 设计一个简单的Windwos风格的G…

【PlantUML系列】类图(一)

目录 一、类 二、接口 三、抽象类 四、泛型类 五、类之间的关系 六、添加注释 七、包图 八、皮肤参数 一、类 使用class关键字定义类&#xff0c;类名后跟大括号&#xff0c;声明类的属性和方法。 属性&#xff1a;格式为{visibility} attributeName : AttributeType…

复现SMPLify-X: Ubuntu22.04, Cuda-11.3, GPU=3090Ti

Env: 3090Ti CUDA 最低支持版本需要>cuda-11.1 Ubuntu 22.04 Installation: Installing CUDA11.3 wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run sudo sh cuda_11.3.0_465.19.01_linux.run …

数据库实验7

数据库实验7 0 建立登录名用SSMS工具建立登录名用T-SQL语句建立登录名 1 删除登录名用SSMS工具实现用T-SQL语句实现 2 建立数据库用户用SSMS工具实现用T-SQL语句实现 3 删除数据库用户用SSMS工具实现用T-SQL语句实现 4 管理用户权限用SSMS工具实现用T-SQL语句实现 5 建立用户定…

4.5 TCP 报文段的首部格式

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言1 TCP 报文段的基本结构2 固定部分2.1 源端口与目的端口2.2 序号2.3 确认号2.4 数据偏移2.5 保留字段2.6 控制位2.7 窗口2.8 检验和2.9 紧急指针 3 可变部分3.1 选项3.2 填…

青听云音乐项目总结

前言 先来介绍一下我的项目&#xff1a;青听云音乐&#xff0c;几乎完全参考网易云音乐网页版实现&#xff0c;使用的技术栈有SpringBoot、SpringCloud、Mybatis、Mybatis-Plus、Redis、Elasticsearch、RabbitMQ、Docker&#xff0c;也包括一些小技术的使用&#xff0c;比如 j…