当前位置: 首页 > news >正文

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.mrgr.cn/news/78991.html

相关文章:

  • 数据仓库的概念
  • JS +CSS @keyframes fadeInUp 来定义载入动画
  • redis签到命令练习
  • 【错误记录】jupyter notebook打开后服务器错误Forbidden问题
  • 车辆传动系统的simulink建模与仿真,分析加速和刹车两个工况
  • 论文阅读之方法: Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris
  • 使用Tomcat搭建简易文件服务器
  • Ansible 运维工具
  • 零基础快速掌握——【c语言基础】数组的操作,冒泡排序,选择排序
  • 我们来学mysql -- 事务并发之脏写(原理篇)
  • HDFS 操作命令
  • Spring Boot Actuator未授权访问漏洞处理
  • 【机器学习】机器学习的基本分类-监督学习-决策树-ID3 算法
  • Unity 模拟百度地图,使用鼠标控制图片在固定区域内放大、缩小、鼠标左键拖拽移动图片
  • Seatunnel解决ftp读取json文件无法读取数组以及格式化之后的json无法解析的问题
  • AllegroHand 四指灵巧手:机器人领域的创新力量
  • 十,[极客大挑战 2019]Secret File1
  • SciPy Optimize和 CVXPY对比
  • Selenium常见问题
  • 生态环境影像评价、遥感解译与GIS技术生态环境影像评价制作
  • k8s的数据库etcd报 etcdserver: mvcc: database space exceeded的处理办法
  • 三维地形图计算软件(四)-用PYQT5+vtk画任意多面示例
  • Android显示系统(02)- OpenGL ES - 概述
  • 活着就好20241204
  • 项目开发中Vue3和Vue2如何选择?
  • c语言基础之二维数组