目录

前沿

minio介绍

使用步骤

1.下载minio文件

2.创建文件夹并上传minio文件

3.操作如下指令

​编辑 4.访问

5.创建存储桶

6.设置

​编辑 7.测试图片上传

8.Java程序的使用步骤

1. 在pom中加入如下依赖

2.在application.yml中加入如下配置并创建相关类

minio服务自启动

打开开机自启文件

添加自启脚本

修改权限

重启测试


前沿

做Java开发的小伙伴肯定遇到过这样的情景,我们在做某个需求的时候需要将图片上传到服务器。很多时候我们就是自己在服务器下面建立一个文件夹然后自己写程序(输入输出流)来实现文件的上传。当然了这种方式挺不错的,但是还有更好的方法吗?当然了,今天就来讲一下如何使用minio来实现这个需求。

minio介绍

MinIO 是高性能的对象存储,是为海量数据存储、人工智能、大数据分析而设计的,它完全兼容Amazon S3接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。MinIO主要采用Golang语言实现,,客户端与存储服务器之间采用http/https通信协议。

使用步骤

1.下载minio文件

我是用的Linux服务器,你可以去这个连接下载所需要的minio文件

2.创建文件夹并上传minio文件

我在自己的/home下创建了一个minio文件又在minio下创建了data文件

mkdir -p /home/minio/data

然后将minio文件传到该文件下

3.操作如下指令

 4.访问

默认情况再minio的访问端口是9000,你可以通过http://ip地址:9000来访问,输入你上面设置的access和secret登录即可

其实这个时候如果我们的minio服务在关机重启或者我们使用ctrl+C后是会关闭,那么如何设置自启动呢?就是说如何实现我们的Linux服务器启动的时候自启动我们的minio,请看最后一节哦。我们现将minio的使用步骤讲完。

5.创建存储桶

点击箭头所示的地方创建自己的存储桶即可,我之前已经创建过一个picbucket了

6.设置

点击箭头所示地方

修改这个地方为public

 7.测试图片上传

点击如图所示地方并点击upload测试即可

至此我们就已经搭建好了我们服务商的minio,那么如何使用程序来实现图片的上传呢?

8.Java程序的使用步骤

1. 在pom中加入如下依赖

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

2.在application.yml中加入如下配置并创建相关类

# minio 文件存储配置信息
minio:endpoint: http://192.168.150.138:9800accesskey: minioadminsecretKey: minioadminbucket : picbucket
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProp {/*** 连接url*/private String endpoint;/*** 用户名*/private String accesskey;/*** 密码*/private String secretKey;/*** 桶名称*/private String bucket;
}
@Configuration
@EnableConfigurationProperties(MinioProp.class)
public class MinioConfig {@Autowiredprivate MinioProp minioProp;/*** 获取 MinioClient** @return* @throws InvalidPortException* @throws InvalidEndpointException*/@Beanpublic MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {return new MinioClient(minioProp.getEndpoint(), minioProp.getAccesskey(), minioProp.getSecretKey());}
}
@Component
public class MinioUtils {@Autowiredprivate MinioClient client;/*** 创建bucket** @param bucketName bucket名称*/@SneakyThrowspublic void createBucket(String bucketName) {if (!client.bucketExists(bucketName)) {client.makeBucket(bucketName);}}/*** 上传文件** @param file       文件* @return*/public String uploadFile(MultipartFile file,MinioProp minioProp) throws Exception {// 判断上传文件是否为空if (null == file || 0 == file.getSize()) {throw  new BizException(4000,"上传文件不能为空");}try {// 判断存储桶是否存在createBucket(minioProp.getBucket());// 文件名String originalFilename = file.getOriginalFilename();// 新的文件名 = 存储桶名称_时间戳+【10000-99999】随机数字.后缀名Random random = new Random();String fileName = minioProp.getBucket() + "_" + System.currentTimeMillis() +(random.nextInt(99999 - 10000) + 10000 + 1)+ originalFilename.substring(originalFilename.lastIndexOf("."));// 开始上传client.putObject(minioProp.getBucket(), fileName, file.getInputStream(), file.getContentType());return minioProp.getEndpoint() + "/" + minioProp.getBucket() + "/" + fileName;}  catch (Exception e) {throw  new BizException(4000,e.getMessage());}}
}

接下来编写自己的上传接口即可

    @ApiOperation("上传图片接口,目前是穿到我自己的虚拟机Linux上,返回图片地址")@PostMapping("upload-image.json")public PicInfoVO upload(String base64) {try {MultipartFile file = new Base64ToMultipartFileUtil(base64,"data:image/jpeg;base64");PicInfoVO vo = new PicInfoVO();String imageUrl = minioUtils.uploadFile(file, minioProp);vo.setImageUrl(imageUrl);return vo;} catch (Exception e) {throw new BizException(4000, e.getMessage());}}

在网上找了一个base64字符串并测试如下,返回了图片的地址

访问图片地址

且服务器上也有了相应的图片

好了,讲完了,谢谢你的观看哦。

minio服务自启动

前面我们讲过可,当我们的Linux服务器关机重启或者我们使用ctrl+C退货minio服务的时候我们的minio服务是不会自己启动的。

如何设置自启动,首先我们补充一点就是在我们的/home/minio/data下建立一个minio.log文件

touch /home/minio/minio.log 用来记录我们的minio日志,当然了你放在哪里都行,我自己是放在这里的

打开开机自启文件

vi /etc/rc.local

添加自启脚本

添加完后一定要记得保存哦

修改权限

chmod +x /etc/rc.local

重启测试

reboot

然后访问http://ip地址:9800看是否可以

Java别在使用普通的照片上传了,你可以使用开源的minio实现图片的上传,方便又简单相关推荐

  1. 微信小程序拍照视频上传php,微信小程序-拍照或选择图片并上传文件

    微信小程序-拍照或选择图片并上传文件 调用拍照API:https://mp.weixin.qq.com/debug/wxadoc/dev/api/media-picture.html?t=201612 ...

  2. 原生态的ajax如何上传文件,原生ajax和iframe框架实现图片文件上传的两种方式

    大家应该可以举出几种常用的异步文件上传功能的实现方式,使用频率较多的有原生ajax和iframe框架,实现图片文件上传,下面就为大家分享图片文件上传的两种方式:原生ajax和iframe框架,供大家参 ...

  3. ueditor 图片上传 java_Spring+Vue整合UEditor富文本实现图片附件上传的方法

    下载UEditor 下载完整源码和JSP版本 Spring后端集成 1. 解压完整源码,拷贝jsp目录下的java源码,到spring mvc后端 jsp目录下java源码 集成spring mvc后 ...

  4. dede图片上传php,织梦cms增加栏目(栏目图片)上传缩略图功能

    很早之前使用DedeCMS的时候,栏目设置里还有一个栏目图片的选项,后来DedeCMS更新到5.7版本之后,这个很实用的功能竟然没取消了,导致很多时候我们在用DedeCMS建站,处理栏目显示样式这一块 ...

  5. 【手把手教】Android开发两种方式实现图片的上传下载

    Android 图片上传的应用场景 在Android开发中,很多时候我们需要进行图片,文件的上传下载,最直接的一个应用场景就是用户头像的保存与切换,以及像即时通讯中的图片发送等任何在App中设计图片的 ...

  6. java后台图片的上传预览接口 IO流

    上传图片接口    图片保存到服务器(适用于任何文件) /** * 上传医生照片 * @param request * @return * @throws Exception * @throws IO ...

  7. java 图片服务器 上传_Java实现把图片上传到图片服务器(nginx+vsftp)

    前言: 在我另一篇笔记中已经记载了如何用nginx + vsftp搭建图片服务器(请参考nginx + vsftp搭建图片服务器),并且用vsftp的客户端工具filezilla测试过已经可用.但是在 ...

  8. JAVA图片裁剪上传实例______软件开发-帮助类

    实现思路 使用jcrop插件手机要裁剪图片的坐标 将收集到的参数传递到后台,在后台使用java图形对象绘制图像进行裁剪  后台处理流程:  1.将上传的图片按按照比例进行压缩后上传到文件服务器,并且将 ...

  9. java流式上传下载_精讲RestTemplate第6篇-文件上传下载与大文件流式下载

    C++Templates(第2版英文版) 123.24元 (需用券) 去购买 > 本文是精讲RestTemplate第6篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在S ...

最新文章

  1. xtrabackup2.4 备份Precona5.6数据库,做增量备份与还原
  2. jq php异步上传图片,PHP+Ajax实现图片异步上传预览
  3. Neurocomputing 投稿注意事项
  4. flask 对excel上传下载操作和文件处理
  5. (转)使用Spring的注解方式实现AOP入门
  6. Android P (1)---开发指南
  7. 第二章 Cameras, Lights, and Shadows
  8. Building libmesh with Petsc support
  9. Linux内核抢占实现机制分析
  10. 【产量预测】基于matlab BP和GRNN神经网络预测粮食产量【含Matlab源码 1247期】
  11. 一键快速生成视频字幕的免费工具
  12. JS实现RGB,HSL,HSB相互转换
  13. 内大计算机学院研究生奖学金,计算机学院2020级硕士研究生学业奖学金评审结果公示...
  14. 容联云 实现验证码发送
  15. Wap Push 源码
  16. 中国汽车电子市场和发展机会分析
  17. 哎!无奈,遇到DDos到底应该怎么办?阿里云将你扔进黑洞;腾讯云清退你!
  18. PAT(乙级)2020年冬季考试真题解析
  19. 数字电源的特点与发展现状
  20. Unity批量预设体替换材质球

热门文章

  1. SLO 落地方案:VALET
  2. OneNote遇到临时服务器无法登录的问题
  3. Python学习路线2023升级版(课程大纲+视频教程+网盘资源下载)
  4. exit在python中是什么意思_Python中exit()和sys.exit()之间的区别
  5. Linux命令之exit
  6. 收藏 | 半监督目标检测相关方法总结
  7. 数学建模-电池剩余放电时间预测
  8. 股票的领先指标有哪些
  9. 安卓城市列表选择-CityPicker-无法编译-support
  10. 如何拿到当月的天数?