文章目录

  • 1. 简介
  • 2. 安装(Docker)
  • 3. Java API
    • 3.1 准备工作
    • 3.2 文件上传
    • 3.3 文件下载
  • 4. 设置永久下载地址

1. 简介

MinIO是一款高性能的对象存储容器,适合存储大量的非结构化数据,例如:图片、视频、Word等文件。此外,它还自带非常方便的可视化界面,简直是运维的最爱啊。

2. 安装(Docker)

  • 拉取镜像
docker pull minio/minio
  • 创建并运行容器
docker run -it --name minio -p 9000:9000 -p 9001:9001 -d \
-v /usr/local/docker/minio/data:/data \
-v /usr/local/docker/minio/config:/root/.minio \
-e 'MINIO_ROOT_USER=admin' \
-e 'MINIO_ROOT_PASSWORD=admin123' \
minio/minio server /data --console-address ":9001"
  • 查看容器日志,启动成功。账号:admin,密码:admin123:

    9000:API调用端口
    9001:控制台端口,不指定他会随机生成。注:控制台用9000也能打开,最终会跳转到9001,效果一样的

  • 随后,在浏览器打开9000端口,分别输入上面的账号密码,登录即可

3. Java API

3.1 准备工作

这里以Java语言为例,框架以SpringBoot为例,调用Minio API进行相关操作

  • 首先,在上面的可视化界面点击左侧 Buckets 菜单,创建一个Bucket,命名为 test01
  • 然后,进入实例代码
  • 使用maven引用minio依赖
 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.0</version><exclusions><exclusion><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.8.1</version></dependency>
  • 建一个 MinioUtil 操作类,并实例化 MinioClient 对象
public class MinioUtil {private static MinioClient client;static {try {client = MinioClient.builder().endpoint(new URL("http://192.168.25.129:9000")).credentials("admin", "admin123").build();} catch (MalformedURLException e) {e.printStackTrace();}}
}

3.2 文件上传

  • 在 MinioUtil 补充2个上传方法:上传本地文本、上传MultipartFile
    /*** 上传本地文件*/public static ObjectWriteResponse upload(String bucket, String localFileName, String remoteFileName) throws Exception{File file = new File(localFileName);FileInputStream fileInputStream = new FileInputStream(file);return client.putObject(PutObjectArgs.builder().stream(fileInputStream, file.length(), PutObjectArgs.MIN_MULTIPART_SIZE).object(remoteFileName).bucket(bucket).build());}/*** 上传MultipartFile*/public static ObjectWriteResponse upload(String bucket, MultipartFile file, String remoteFileName) throws Exception {return client.putObject(PutObjectArgs.builder().bucket(bucket).stream(file.getInputStream(), file.getSize(), PutObjectArgs.MIN_MULTIPART_SIZE).object(remoteFileName).build());}
  • 创建 MinioController ,加2个接口分别测试上传:
@RestController
@RequestMapping("/minio")
public class MinioController {/*** 上传本地文件*/@GetMapping("/uploadLocalFile")public String uploadLocalFile() throws Exception{ObjectWriteResponse resp = MinioUtil.upload("test01", "E:\\测试文件.txt", getDatePath()+"test.txt");return "上传成功";}/*** 上传MultipartFile*/@PostMapping("/uploadMultipartFile")public String uploadMultipartFile(MultipartFile file) throws Exception {ObjectWriteResponse resp = MinioUtil.upload("test01", file, getDatePath() + file.getOriginalFilename());return "上传成功";}private String getDatePath(){LocalDateTime now = LocalDateTime.now();return String.format("/%s/%s/%s/", now.getYear(), now.getMonthValue(), now.getDayOfMonth());}
}
  • 执行完毕后,在 test01 这个 bucket 底下,会创建 /2021/09/27/ 的目录,并且将文件上传到该目录下

3.3 文件下载

  • 修改 MinioUtil,增加 2 个下载方法,分别是下载到本地和浏览器打开下载
    /*** 下载文件到本地*/public static void downLocal(String bucket, String remoteFileName, String localFileName) throws Exception {client.downloadObject(DownloadObjectArgs.builder().bucket(bucket).object(remoteFileName).filename(localFileName).build());}/*** 下载文件写入HttpServletResponse*/public static void downResponse(String bucket, String remoteFileName, HttpServletResponse response) throws Exception {GetObjectResponse object = client.getObject(GetObjectArgs.builder().bucket(bucket).object(remoteFileName).build());response.setHeader("Content-Disposition", "attachment;filename=" + remoteFileName.substring(remoteFileName.lastIndexOf("/")+1));response.setContentType("application/force-download");response.setCharacterEncoding("UTF-8");IOUtils.copy(object, response.getOutputStream());}
  • 修改 MinioController,增加2个对应的接口
    /*** 下载文件到本地*/@PostMapping("/downLocal")public String downLocal() throws Exception {MinioUtil.downLocal("test01", "/2021/9/27/test.txt", "test.txt");return "下载成功";}/*** 下载文件写入HttpServletResponse*/@GetMapping("/downResponse")public void downResponse(HttpServletResponse response) throws Exception {MinioUtil.downResponse("test01", "/2021/9/27/test.txt", response);}

分别访问这2个接口就可以测试,这边就不演示了

4. 设置永久下载地址

前面讲的例子是调用 Minio API 获取文件,从而实现下载功能。此外,minio 也允许通过文件地址直接下载。

  • 打开 Bucket,点击 Manage 进行设置管理
  • 点击这里的 Private,把它改成 Public
  • 以这个文件为例,下载地址就是 http://192.168.25.129:9000/test01/2021/9/27/test.txt,直接从浏览器打开就可以测试。

MinIO安装和基本使用相关推荐

  1. minio安装部署及使用

    一.服务器安装minio 1.进行下载 下载地址: GNU/Linux https://dl.min.io/server/minio/release/linux-amd64/minio 2.新建min ...

  2. MinIo 安装及其集成到java中上传下载图片信息

    MinIo 安装及其集成到java中上传下载图片信息 win 下安装 下载链接:https://min.io/download#/windows 下载好后cmd打开控制台 输入:minio.exe s ...

  3. minio安装与使用-win10

    minio安装与使用 参考链接: https://blog.csdn.net/hjjjjjjj_/article/details/119783355 官网: https://min.io/ 下载地址: ...

  4. minio安装(包括docker安装)

    一.安装包安装 (1)FTP上传包minio下载地址(https://min.io/download)至/minio目录下. (2)增加权限. chmod +x minio (3)启动minio ./ ...

  5. minio安装及特性原理介绍

    linux下安装&启动 wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio mkdir / ...

  6. MinIO安装及使用教程(windows) 及java 上传 下载 windows minio 修改密码修改 MINIO_ACCESS_KEY minio开机启动

    1.下载安装地址(我下的是windows版本):https://min.io/download#/windows 2.新建一个目录存放minio文件,我建的文件名叫 D:\minioData,CMD进 ...

  7. minio 安装及使用

    主要环境linux+java minio 官网地址:https://min.io/ wget https://dl.minio.io/server/minio/release/linux-amd64/ ...

  8. 轻量级对象存储服务minio安装及使用

    简介 Minio 是一个基于Apache License v2.0开源协议的对象存储服务,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器/虚拟机镜像等,而一个对象文件可以 ...

  9. minio安装教程 linux+windows

    下载文件 这个网站毛病,下载资源不能直接点,要在路由后端拼接地址才能访问,否则no found . 点击下面的链接直接下载对应系统的minio,不过可能需要科学上网工具,否则 下载速度比较慢,如果下载 ...

最新文章

  1. 一、多个txt文件合并成1个txt文件
  2. AR + ROS +UBUNTU16.04+ORB-SLAM2
  3. 修改docker默认网桥
  4. 澳洲专升硕计算机专业,澳洲计算机专升硕-纽卡斯尔大学
  5. ITK:创建3D体积
  6. 再见IE浏览器(IE之死2021 年 8 月 17 日)
  7. 五步让你成为专家级程序员
  8. [USACO13JAN] Seating
  9. linux中realplayer.rpm格式的软件安装,Linux_Linux中realplayer播放器安装步骤,Linux操作系统在安全性能上远 - phpStudy...
  10. 高斯公式积分matlab,数值分析 高斯—勒让德积分公式
  11. 稀疏矩阵的实现以及高斯塞达尔迭代法
  12. 长沙公积金和商贷组合贷款
  13. Codeforces 1635 E. Cars 二分图+拓扑排序
  14. Benchmark Analysis 7:SPEC2006.482sphinx
  15. 验证Hu矩的旋转不变性
  16. mysql餐饮管理系统设计_酒店餐饮管理系统的设计与实现(MySQL)(含录像)
  17. Docker run 命令
  18. π142E60 Pai142E60 5.0kVrms 200Mbps 四通道数字隔离器芯片完美代替NSi8142W0
  19. 如何使用表述性Pipeline
  20. 遭遇Viking/威金新变种、Trojan-PSW.Win32.WOW.do等(一)

热门文章

  1. JCO3远程调用SAP接口随笔一(配置连接池)
  2. 放弃中国国籍 却赚着中国人的钱
  3. SAP CK40N常见问题
  4. pp模块中关于物料反冲的探讨
  5. ABAP Write 宝典
  6. 亲戚再也看不见我一个人食吉野家了
  7. 疫情冬天过去,二手经济春天到来
  8. k86跟mysql_MySQL【基础架构】
  9. 数据库能承受多少并发量_在工业应用中,高温套管能承受多少度?
  10. Python 下载的九种方法