springboot整合minio最新版

第一步:查找minio最新依赖,通过maven查询网站查询,这搜索框输入minio,
也可以查看MinIO官网https://docs.min.io/docs/java-client-quickstart-guide.html
如下:

img

点击minio进入查看maven依赖,可以看到最新版为8.3.4

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

第二步:(整合到项目中)

1.将依赖添加到新建的springboot项目中,在pom.xml添加
2.配置minio客户端,不会的话参考minio java sdk文档,但是这个文档给的是3.0.10版本的sdk,与新版的不兼容,最新版的还是看github地址

参数说明
Endpoint对象存储服务的URL
Access KeyAccess key就像用户ID,可以唯一标识你的账户
Secret KeySecret key是你账户的密码

默认安装不指定Access key 和Secret key 的话都是minioadmin, Endpoint则为服务器地址:如我安装的的端口为1024,那Endpoint就是:http://localhost:1024]
为了方便我们通过bean的方式注入客户端如下:

yml

spring:# 配置文件上传大小限制servlet:multipart:max-file-size: 100MBmax-request-size: 100MB# minio 参数配置
minio:endpoint: http://localhost:1024accessKey: minioadminsecretKey: minioadmin
@Configuration
public class MinIoClientConfig {@Value("${minio.endpoint}")private String endpoint;@Value("${minio.accessKey}")private String accessKey;@Value("${minio.secretKey}")private String secretKey;/*** 注入minio 客户端* @return*/@Beanpublic MinioClient minioClient(){return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();}
}

ok,现在客户端已注入spring容器中,在使用的时候,只需要获取就可以了。

第三步: 文件上传
1.新增一个UploadController控制器用于处理文件上传,如下:

@RestController
public class UploadController {@Resourceprivate MinioClient minioClient;/*** 文件上传* @param file* @return*/@PostMapping("/upload")public String upload(MultipartFile file){try {PutObjectArgs objectArgs = PutObjectArgs.builder().object(file.getOriginalFilename()).bucket("test").contentType(file.getContentType()).stream(file.getInputStream(),file.getSize(),-1).build();minioClient.putObject(objectArgs);return "ok";} catch (Exception e) {e.printStackTrace();return e.getMessage();}}
}

注意这里的bucket是我提前在minio中新增好的,如果没有的话,可以自己手动添加,也可以通过代码添加,具体参考sdk的说明,这里就不多说了。

2.通过postman测试文件上传(没有postman的可以看我之前的博客,有相关介绍)

img

点击执行后返回ok,执成功,此时通过minio web端看看文件是否上传成功

img

看到刚上传的文件就说明成功了。3.其他说明,如何通过浏览器访问刚上传的图片呢,就是通过endpoint服务地址加bucket名称加图片的名称,在本例子访问路径则为:5b01ca40273bcf53f4e6d84c0c595642.gif

第四步:文件下载

在UploadController控制其中新增download方法,如下:

  /*** 下载文件* @param filename*/@GetMapping("/download/{filename}")public void download(@PathVariable String filename, HttpServletResponse res){GetObjectArgs objectArgs = GetObjectArgs.builder().bucket("test").object(filename).build();try (GetObjectResponse response = minioClient.getObject(objectArgs)){byte[] buf = new byte[1024];int len;try (FastByteArrayOutputStream os = new FastByteArrayOutputStream()){while ((len=response.read(buf))!=-1){os.write(buf,0,len);}os.flush();byte[] bytes = os.toByteArray();res.setCharacterEncoding("utf-8");res.setContentType("application/force-download");// 设置强制下载不打开res.addHeader("Content-Disposition", "attachment;fileName=" + filename);try ( ServletOutputStream stream = res.getOutputStream()){stream.write(bytes);stream.flush();}}} catch (Exception e) {e.printStackTrace();}}

通过访问下载地址:http://localhost:8421/download/5b01ca40273bcf53f4e6d84c0c595642.gif,文件下载下来能够正常显示,则说明成功。

总结:
通过以上操作,我们已经完成springboot与minio的整合,可以通过minio sdk实现文件上传与下载功能。当然还有其他api操作,我就不多介绍了,都是一个思路,调用传值就可以了,自己尝试一下,就能get到了。

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

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

相关文章

linux openh264 编译,在Linux下为Android构建openh264

我正在尝试构建openh264以在android上使用-我有来自git的最新openh264源码-我已经ndk 17-我正在使用Ubuntu 16.04跑步make OSandroid NDKROOT/home/r/aff/ndk TARGETandroid-27 NDKLEVEL27 sysroot/home/r/aff/ndk/sysroot我得到了错误&#xff1a;rr:~/aff/openh264$ make OSa…

学生学籍管理系统python_使用Python实现 学生学籍管理系统

大家好&#xff0c;今天跟大家分享一个用Python实现的学生学籍管理系统&#xff1a; 该代码主体由五个函数组成&#xff1a; 1.add_stu() 添加 2.del_stu() 删除 3.print_stu()打印 4.exit_stu() 退出 5.system() 主函数 1.add_stu() 此段函数作用&#xff1a;把输入的值存入字…

Okhttp使用详解

在Android开发中&#xff0c;发送HTTP请求是很常见的。SDK中自带的HttpURLConnection虽然能基本满足需求&#xff0c;但是在使用上有诸多不便&#xff0c;为此&#xff0c;square公司实现了一个HTTP客户端的类库——Okhttp 。 Okhttp是一个支持HTTP 和 HTTP/2 的客户端&#x…

如何开发rest接口服务_如何简化网络请求接口开发

日常开发中&#xff0c;需要大量和后端对接接口&#xff0c;很容易写出大量的模板代码&#xff0c;比如把对接口的请求放到组件内&#xff0c;或者虽然有数据访问层&#xff0c;但是有大量 get&#xff0c;post 方法的调用&#xff0c;传参的字符串拼接&#xff0c;异常处理等等…

OkHttp协议介绍以及文件下载和上传+OkHttp协议封装+OkHttp拦截器____SpringBoot——集成Okhttp3

OkHttp协议 okhttp是一个第三方类库&#xff0c;用于android中请求网络 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 文件下载用Get方式 OkHttpClient okHttpClient new OkHttpClient.Builder().callTimeout…

质量属性效用树例子_数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇

HT 是啥&#xff1a;Everything you need to create cutting-edge 2D and 3D visualization.这口号是当年心目中的产品方向&#xff0c;接着就朝这个方向慢慢打磨&#xff0c;如今 HT 算是达到了这样的效果&#xff0c;谈不上用尽洪荒之力&#xff0c;但我们对产品结果很满意&a…

linux vi 出现下划线,Vim高亮当前行(显示为下划线)的解决方案

最近配置Vim&#xff0c;由于以前的vimrc早已丢失&#xff0c;只好重新配置一份&#xff0c;此为题外话&#xff0c;略过不提…在Vim中&#xff0c;可以选择开启高亮当前行&#xff0c;这是一个很不错的特性。开启它也很简单&#xff0c;只需要在vimrc中加入这么一行&#xff1…

springBoot 简单优雅是实现文件上传和下载

前言 好久没有更新spring Boot 这个项目了。最近看了一下docker 的知识&#xff0c;后期打算将spring boot 和docker 结合起来。刚好最近有一个上传文件的工作呢&#xff0c;刚好就想起这个脚手架&#xff0c;将文件上传和下载整理进来。 配置 在application.properties 中增…

C语言的VC开发环境界面介绍,【c语言在vc++6.0中编写界面程序】

到现在为止&#xff0c;C 仍然是计算机编程领域的经典语言之一&#xff0c;C 17 标准在2017上半年已经探讨确定。本期我们汇集了编程专家——祁宇(《深入应用 C 11》作者&#xff0c;C 开源社区 purecpp.org 创始人)的多年心得小结&#xff0c;并具体介绍了 C 17 最新标准中值得…

SpringBoot+VUE 前端加密算法 RSA+DES

前言 为了提高用户登陆的安全性&#xff0c;公司准备整理一份相对安全的登陆模式。 想法 主流加密算法 主流加密算法 &#xff08;一&#xff09;对称加密AES ,其特点是&#xff1a;算法简单&#xff0c;加密速度快&#xff1b; &#xff08;二&#xff09;非对称加密方式&…

spring cloud微服务_年后进大厂,必备这份微服务面试题:Dubbo+SpringBoot+Cloud

Dubbo面试题Dubbo与DubboX区别Dubbo中zookeeper做注册中心&#xff0c;如果注册中心集群都挂掉&#xff0c;发布者和订阅者之间还能通信么&#xff1f;Dubbo中有哪些角色&#xff1f;Dubbo在安全机制方面是如何解决的Dubbo执行流程&#xff1f;Dubbo支持的协议有哪些&#xff1…

c语言交通违章编程代码,C语言程序设计之交通处罚单管理系统 报告(内含代码).doc...

C语言程序设计姓名&#xff1a;张强强学号&#xff1a;20121003695班序号&#xff1a;011121前言&#xff1a;C语言是近年来国内得到迅速推广使用的一种计算机语言。C语言程序设计课程是计算机专业和信息管理专业的核心专业基础课&#xff0c;无论是计算机专业还是非计算器专业…

前端 - token 是什么?为什么每次请求头(HEADS)里要携带它?___请求时,为什么要携带token?

前端 - token 是什么&#xff1f;为什么每次请求头&#xff08;HEADS&#xff09;里要携带它&#xff1f; Token token 是客户端频繁向服务器端请求数据&#xff0c;服务器频繁的去数据库查询用户名和密码进行对比&#xff0c;判断用户名和密码正确与否&#xff0c;并作出相应…

全栈工程师薪水_2020 Java 全栈工程师进阶路线图,不可错过

技术更新日新月异&#xff0c;对于初入职场或者刚开始学习的同学来说&#xff0c;经常会困惑该往那个方向发展&#xff0c;这一点所有刚开始学习的人基本都有这个体会的。刚开始学习 Java 那会&#xff0c;最大的问题就是不知道该学什么&#xff0c;以及学习的顺序&#xff0c;…

5乘7的c语言程序,C语言程序设计实验5-7教案(20页)-原创力文档

第 7-8 次课程名称 程序设计基础 课程性质 实验课授课班级 网络 16-1 、2 授课地点 14022016 年 11 月 9 日第 5 小节 ~第 8 小节授课时间 2016 年 11 月 16 日第 5 小节~第 8 小节2016 年 11 月 23 日第 5 小节~第 8 小节课题&#xff1a; 实验六、 数组的应用—— 4 学时主要…

python手机安装模块_python如何安装模块 模块安装操作教程

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言&#xff0c;设计具有很强的可读性&#xff0c;相比其他语言经常使用英文关键字&#xff0c;它具有比其他语言更有特色语法结构。那么Python的安装模块该怎么使用呢&#xff1f;让小编来教一下各位吧。模…

cookie 和 token 都存放在 header 中,为什么不会劫持 token?____token和cookie的区别

cookie 和 token 都存放在 header 中&#xff0c;为什么不会劫持 token&#xff1f; cookie:登录后服务端生成的sessionid&#xff0c;并在http请求里返回到客户端&#xff0c;同时服务端保存sessionid&#xff0c;以后客户端的每次http请求都带上cookie&#xff08;sessionid…

语言inc c,汇编语言练习

习题一1&#xff0e;在计算机内部&#xff0c;计算机能够直接执行的程序语言是。A&#xff0e;汇编语言 B。C语言C&#xff0e;机器语言 D。高级语言2&#xff0e;在堆栈段中&#xff0c;存放栈顶地址的寄存器是。A&#xff0e;IP &#xff22;&#xff0e;SP &#xff23;&…

python降维之时间类型数据的处理_使用Python进行数据降维|线性降维

前言为什么要进行数据降维&#xff1f;直观地好处是维度降低了&#xff0c;便于计算和可视化&#xff0c;其深层次的意义在于有效信息的提取综合及无用信息的摈弃&#xff0c;并且数据降维保留了原始数据的信息&#xff0c;我们就可以用降维的数据进行机器学习模型的训练和预测…

cookie、Session、Token、sessionStorage、localStorage简介__Token放在 cookie, sessionStorage 和 localStorage中区别

cookie、Session、Token、sessionStorage、localStorage简介 cookie 是一个非常具体的东西&#xff0c;只得是浏览器里永久存储的一种数据&#xff0c;是浏览器实现的一种数据存储功能。Cookie在计算机中是个存储在浏览器目录中的文本文件&#xff0c;当浏览器运行时&#xf…