窝瓜云盘
Damoncai 11/7/2022 wogua
# 第一章 简介
类似于百度网盘功能,但是实际功能比较少,支持10M文件上传和下载
文件存储方式为MinIO分布式存储服务,通过java-sdk进行相关操作
# 第二章 效果展示
# 第三章 核心代码
MinioProperty
Minio配置参数
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProperty {
private String endpoint;
private String username;
private String password;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
MinioFactory
MinioFactory
开始是想通过单例模式创建MinioClient
对象,最终是MinioClient
对象注入
@Component
public class MinioFactory {
@Autowired
private MinioProperty minioProperty;
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(minioProperty.getEndpoint())
.credentials(minioProperty.getUsername(), minioProperty.getPassword())
.build();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
MinioUtils
MinioUtils主要封装了对MinIO Server操作的的方法
@Component
public class MinioUtils {
@Autowired
private MinioClient minioClient;
/**
* 删除文件
* @param objectName
*/
public void removeFile(String bucketName, String objectName)throws Exception {
RemoveObjectArgs args = RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build();
minioClient.removeObject(args);
}
/**
* 是否存在桶
* @param name
* @return
*/
public boolean existBucket(String name) throws Exception {
BucketExistsArgs buildExistsArgs = BucketExistsArgs.builder().bucket(name).build();
return minioClient.bucketExists(buildExistsArgs);
}
/**
* 创建bucket
*/
public void createBucket(String bucketName) throws Exception {
BucketExistsArgs bucket = BucketExistsArgs.builder().bucket(bucketName).build();
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
/**
* 对象列表
* prefix 可以为空,空串
*/
public Iterable<Result<Item>> listObjects(String bucketName, String prefix) throws Exception {
ListObjectsArgs listObjects = ListObjectsArgs.builder().bucket(bucketName).prefix(prefix).build();
return minioClient.listObjects(listObjects);
}
/**
* 上传文件
* @param file
* @param bucketName
* @param object
* @throws Exception
*/
public void putObject(MultipartFile file, String bucketName, String object)throws Exception {
PutObjectArgs args = PutObjectArgs.builder()
.bucket(bucketName)
.object(object)
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(file.getContentType())
.build();
minioClient.putObject(args);
}
/**
* 获取对象
* @param bucketName
* @param object
* @return
* @throws Exception
*/
public FilterInputStream getObject(String bucketName, String object) throws Exception {
GetObjectArgs getObject = GetObjectArgs.builder().bucket(bucketName).object(object).build();
return this.minioClient.getObject(getObject);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73