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控制台
    在这里插入图片描述
    可以看到,蜡笔小新已经被存到了服务器中。
  • 接下来测试获取下载路径的接口
    在这里插入图片描述

将获取到的链接用浏览器打开
在这里插入图片描述

成功!

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

猜你喜欢

转载自blog.csdn.net/weixin_44653914/article/details/108652161