MinIO一小时搭建自己的云存储服务!(Java版)

Posted 你,好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MinIO一小时搭建自己的云存储服务!(Java版)相关的知识,希望对你有一定的参考价值。

话不多说,进入正题

环境准备

  1. 根据服务器系统下载 MinIO(俺的是centos,官网都有详细步骤,其他系统就看官网安装)
  2. 把安装包挪到服务器中,安装。
	chmod +x minio ## 给minio可执行权限
	./minio server /data ## 启动MinIO并在当前目录创建data文件夹,之后上传的资源都会存到data文件夹中

控制台打印说明启动正确

Endpoint:  http://172.17.17.17:9000  http://127.0.0.1:9000    

Browser Access:
   http://172.17.17.17:9000  http://127.0.0.1:9000    

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   javascript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'
  • 注意(这是文件上传的密钥,以及minio管理平台的账号密码)
    MINIO_ACCESS_KEY:minioadmin
    MINIO_SECRET_KEY:minioadmin
  1. 将 9000 接口加入云服务器安全组!(切记,容易忘)
  2. 谷歌输入服务器ip:9000,出现以下界面,安装完成。(很好看的界面)
  3. 输入密钥(minioadmin,minioadmin),登录,创建一个名为 pic 的文件夹

搭建服务

  1. 创建一个SpringBoot Web工程,引入MinIO依赖
<dependency>
	<groupId>io.minio</groupId>
	<artifactId>minio</artifactId>
	<version>7.1.2</version>
</dependency>
  1. 创建MinIOUtil工具类
public class MinIOUtil 
    final static String AC = "minioadmin"; 
    final static String SE = "minioadmin";
    final static String BUCKET = "pic"; // 存放文件的文件夹
    final static MinioClient CLIENT = MinioClient.builder().endpoint("http://59.110.44.217:9000/").credentials(AC, SE).build(); // 单例创建一个MinIO客户端对象
    // 上传
    public static void upload(MultipartFile file) throws Exception 
        String filename = file.getOriginalFilename(); // 获取完整文件名
        String contentType = file.getContentType(); // 获取文件类型
        InputStream ips = file.getInputStream(); // 获取文件流
        // 链式编程  上传文件
        CLIENT.putObject(PutObjectArgs.builder().bucket(BUCKET).object(filename).stream(ips, -1, 5*1024*1024*1024L).contentType(contentType).build());
    
    // 获取下载路径
    public static String getDownloadUrl(String objectName) throws Exception
        return CLIENT.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().object(objectName).method(Method.GET).bucket(BUCKET).build());
    

  1. 创建MinIOController类
@Controller
public class MinIOController 
	// 上传
    @PutMapping("/minio/upload")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file)
        try 
            MinIOUtil.upload(file);
            return file.getOriginalFilename()+" 上传成功!";
         catch (Exception e) 
            e.printStackTrace();
            return file.getOriginalFilename()+" 上传失败!";
        
    
    // 获取下载路径
    @GetMapping("/minio/getDownloadUrl")
    @ResponseBody
    public void getDownloadUrl(@RequestParam("objectName") String objectName)
       try 
            String url = MinIOUtil.getDownloadUrl(objectName);
            return objectName+" 的下载路径为:"+url;
         catch (Exception e) 
            e.printStackTrace();
            return "获取失败!";
        
    

这样,一个简单的上传服务就写好了,接下来测试一下吧

测试

运行SpringBoot工程,用Postman测试。

  • 首先测试上传接口

    上传成功!
    我们再来看看MinIO控制台

    可以看到,蜡笔小新已经被存到了服务器中。
  • 接下来测试获取下载路径的接口

将获取到的链接用浏览器打开

成功!

我们的云存储服务以基本完成。剩下的还有批量上传,删除等功能,再慢慢完善,希望这篇文章对大家有帮助。

以上是关于MinIO一小时搭建自己的云存储服务!(Java版)的主要内容,如果未能解决你的问题,请参考以下文章

【Minio】基于AWS S3协议搭建个人云存储服务

docker搭建minio以及java sdk使用

SpringBoot 搭建基于 minio 的高性能存储服务

搭建文件服务器 MinIO和Java中上传文件至MinIO服务器

使用Minio Clinet将老版本Minio的数据迁移到新版本的Minio

分布式存储Minio集群环境搭建