对于项目的文件存储可以使用
MinIo
文件管理系统
官网地址:
MinIO | High Performance, Kubernetes Native Object Storage
下载使用
先根据官网地址进行下载MinIo的server端和client端,
下载好后,将server client端放到一个你想放的文件夹,本文以
C:\JAVA\RUANJIAN\minio
路径放置,并创建了一个
file
文件夹来作为server端启动时指定的路径,如图:
在此路径下进入cmd窗口,输入如下命令
.\minio.exe server C:\JAVA\RUANJIAN\minio\file
请注意minio.exe默认占用
9000
端口,请保持此端口空闲,或者可以去官网查询启动时添加端口参数命令.
当出现这样就说明你的minio启动正常,选择你的浏览器输入
http://localhost:9000/
,会自动跳转到minio控制台界面:63682。
登录的用户名和密码会在启动minio的cmd窗口显示。
如: minioadmin
minio配置
然后可以在导航栏的
identity/user
处创建一个用户,点击
create user
按钮
用户名密码以及权限可以自行选择,密码需要大于8位,创建好用户之后,也可以使用该用户以及密码进行minio控制台的登录。
之后点击
service account
按钮然后点击
create service account
按钮
会随机生成
accessKey secretKey
,点击
create
按钮后.
会将这两个key进行展示,此时可以复制粘贴到一个文本文件上,后续使用代码上传文件时需要用到这两个key
然后再创建一个
bucket
尽量给你的bucket取一个有意义的名字或者是比较好记的,后面也会用到。
开始编写一个上传文件的demo
创建一个maven项目,导入依赖:
pom.xml
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.3</version>
</dependency>
编写上传测试类
FileUploader.java
package com.example.demo.util;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class FileUploader {
public void uploaderTest() throws IOException, NoSuchAlgorithmException, InvalidKeyException {
try {
// Create a minioClient with the MinIO server playground, its access key and secret key.
MinioClient minioClient =
MinioClient.builder()
.endpoint("http://localhost:9000")//本地地址
.credentials("YkiUUqxc4S21cO8X", "s64lkz48nCSGzcEaYeYA9soCMB5GmtBv")//之前保存的key
.build();
// 判断你的bucket,有没有叫“你的名字”
boolean found =
minioClient.bucketExists(BucketExistsArgs.builder().bucket("cxlong").build());
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket("cxlong").build());
} else {
System.out.println("Bucket 'cxlong' already exists.");
}
// 上传 'C:\\Users\\CXLONG\\Pictures\\aaa1.png' 图片在minio叫 'aaa1.png' 在 //'cxlong'里面
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("cxlong")
.object("aaa1.png")
.filename("C:\\Users\\CXLONG\\Pictures\\aaa1.png")
.build());
System.out.println(
"'C:\\Users\\CXLONG\\Pictures\\aaa1.png' is successfully uploaded as "
+ "object 'C:\\Users\\CXLONG\\Pictures\\aaa1.png' to bucket 'cxlong'.");
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
System.out.println("HTTP trace: " + e.httpTrace());
}
}
}
这样就可以将所选的图片上传到minio上了,然后去你的bucket刷新一下就能看到刚刚上传的文件。
如果设置了正确的contentType就会有
preview
这个选项就可以在控制台预览图片,也可以点击
share
,复制url到浏览器打开,如果没有设置contentType就会需要下载
上传图片到minio就简单的完成了,上传其他文件也是一样的。