通常我们可以把上传的文件另存为到一个专门的目录,但是缺点是不好管理。
我们可以用fastdfs 但是缺点是部署太麻烦
因此我们使用 minio
部署
1安装
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod 755 minio
mv minio /usr/local/bin
mkdir minio_data #文件都存到这里
export MINIO_ROOT_USER=用户名
export MINIO_ROOT_PASSWORD=密码
2关闭防火墙(可能用不到)
systemctl stop firewalld
或者开启打算访问控制台的端口
firewall-cmd --zone=public --add-port=打算访问控制台的端口/tcp --permanent
systemctl restart firewalld
3启动测试
minio server minio_data的路径 --address=:控制台端口 --console-address=:管理系统端口
4后台启动
nohup minio minio server minio_data的路径 --address=:控制台端口 --console-address=:管理系统端口 &
5浏览器访问
http:/IP:管理系统端口
6终止
ps -C minio -o pid=
kill -9 查到的进程号
JAVA操作
public class FileUtil {
public static MinioClient getMinioClient() {
MinioClient minioClient = null;
try {
minioClient = new MinioClient("http://xxxx:xxx/", "用户名", "密码");
} catch (InvalidEndpointException e) {
e.printStackTrace();
} catch (InvalidPortException e) {
e.printStackTrace();
}
return minioClient;
}
public void demo() {
// 参数为:图床,账号,密码
MinioClient minioClient = null;
try {
minioClient = new MinioClient("http://xxxx:xxx/", "用户名", "密码");
// 检查文件夹是否已经存在
boolean isExist = minioClient.bucketExists("test");
if (isExist) {
System.out.println("文件夹已经存在了");
} else {
// 创建一个名为test的文件夹
System.out.println("文件夹还没存在");
minioClient.makeBucket("test");
}
// 使用putObject上传一个文件到文件夹中。
// 参数为:文件夹,要存成的名字,要存的文件
minioClient.putObject("test", "testFile.png", "C:/Users/Administrator/Desktop/testFile.png");
System.out.println("成功了");
// 使用getObject获取一个文件
// 调用statObject()来判断对象是否存在。
minioClient.statObject("test", "testFile.png");
// 获取1.png的流并保存到photo.png文件中。
// 参数为:文件夹,要获得的文件,要写入的文件
minioClient.getObject("test", "testFile.png", "C:/Users/Administrator/Desktop/testFile.png");
} catch (InvalidEndpointException e) {
e.printStackTrace();
} catch (InvalidPortException e) {
e.printStackTrace();
} catch (RegionConflictException e) {
e.printStackTrace();
} catch (InvalidArgumentException e) {
e.printStackTrace();
} catch (InvalidBucketNameException e) {
e.printStackTrace();
} catch (InsufficientDataException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (ErrorResponseException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoResponseException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InternalException e) {
e.printStackTrace();
}
}
}