spring boot minio,
目录
1.安装部署1.1 Linux简单部署1.2码头工人部署2.板簧罩整合3.问题记录4.项目地址在我们平时做项目的时候,文件存储是个很常见的需求。这时候我们就会用到对象存储服务,平时我们可能会选择OSS、AWS S3这类第三方服务。今天带大家搭建一款自己的对象存储服务,带可视化管理,用起来也挺简单。
迷妮欧是一款基于尝试语言的高性能对象存储服务,它采用了街头流氓许可证2.0版开源协议,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。
1. 安装部署
1.1 Linux 简单部署
wget https://dl.min.io/server/minio/release/linux-amd64/miniochmod x MINIO MINIO _ ROOT _ USER=admin MINIO _ ROOT _ PASSWORD=123456 # #启动并指定端口./minio server/mnt/data-console-address :9001 # #或者后台启动诺胡普/minio server/mnt/data/opt/minio/minio。21号日志
然后访问对应地址即可:云服务器的话记得去安全组打开对应端口,账号密码如图所示:
1.2 Docker 部署
#下载迷妮欧的码头工人镜像docker pull minio/minio # -控制台-地址指定迷你控制台的运行端口(否则会随机端口运行) 暴露端口9001或者9000 docker run-p 9090:9000-p 90013:9001-name MINIO -v/mydata/MINIO/data :/data -e MINIO _ ROOT _ USER=minioadmin -e MINIO _ ROOT _ PASSWORD=minioadmin -d MINIO/MINIO server/data-console-address :9001
2. Spring boot 整合
添加相关依赖
!- 引入迷妮欧依赖-依赖关系groupIdio.minio/groupId artifactIdminio/artifactId版本8 .0 .3/版本/依赖关系添加相关配置信息
默认安装不指定访问键和秘密钥匙的话都是minioadmin,端点则为服务器应用程序界面地址.
春天: #配置文件上传大小限制servlet :多部分:最大文件大小: 100 MB最大请求大小: 100 MB # minio参数配置迷你:端点: http://127.0.01:9000访问密钥:分钟秘密密钥:分钟注入客户端
将客户端注入弹簧容器中,使用的时候直接获取即可。
@ configuration公共类minio config { @ Value($ { minio。端点} )私有字符串终结点;@Value(${minio.accessKey} )私有字符串access key @ Value($ { minio . secret key } )私有字符串secretKey/** *注入迷妮欧客户端* * @ return */@ Bean公共minio客户端minio client(){ return minio client。构建器().端点(终点).凭据(访问密钥,秘密密钥).build();}}编写相关业务代码
编写相关业务代码,上传图片后将相关的路径回传。
/** * 文件上传(自定义文件名称)*/public MinIoUploadVo upload(String strDir,MultipartFile multipartFile)引发异常{ //桶不存在,创建如果(!这个。桶存在(strDir)){ this。制作桶(strDir);} InputStream InputStream=多部分文件。getinputstream();//创建一个headers MapString,String headers=new HashMap();//添加请求头文件的内容类型动态配置多部分文件。获取内容类型()头。put(内容类型,应用程序/八位字节流);字符串文件名=多部分文件。getoriginalfilename();String minFileName=minFileName(文件名);实例。putobject(putobjectargs。构建器().桶(斯特迪尔).对象(最小文件名).stream(inputStream,inputStream.available(),-1) //PutObjectOptions,上传配置(文件大小,内存中文件分片大小) .标题(标题)。build());String url=endpoint.concat(/).concat(strDir).concat(/).concat(minFileName);//返回生成文件名、访问路径返回新的MinIoUploadVo(strDir,fileName,minFileName,URL);}上传文件接口
@RequestMapping(value=/upload ,method=RequestMethod .POST)公共R上传(多部分文件文件,HttpServletRequest请求)抛出io异常{ String strDir=request。getparameter( bucket name )==null?汽车:请求。getparameter( bucket name );请尝试{ MinIoUploadVo uploadVo=minioservice。上传(strDir,file);返回R.ok().消息(文件上传成功).数据(uploadVo);} catch(异常e) { log.error(上传文件失败,msg={} ,e . getmessage());e . printstacktrace();返回错误();}}测试相关接口
如果不能访问该地址,记得去开启相关权限。
3. 问题记录
S3空气污染指数向控制台端口发出请求106 . S3请求应该发送到应用程序界面端口。
原因是配置文件里面用了安慰控制台的端口,应该使用应用程序接口端口:
4. 项目地址
更多演示案例可以前往我的个人仓库查看正在逐步更新中。
https://gitee.com/cl1429745331/java-coder
到此这篇关于跳羚集成迷妮欧实现文件存储的实现代码的文章就介绍到这了,更多相关跳羚迷你文件存储内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。