Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_46911822
mall
提交
f6652cf4
M
mall
项目概览
qq_46911822
/
mall
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mall
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f6652cf4
编写于
8月 15, 2020
作者:
M
macro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
MinIO版本升级
上级
3af3b81f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
73 addition
and
17 deletion
+73
-17
mall-admin/src/main/java/com/macro/mall/controller/MinioController.java
.../main/java/com/macro/mall/controller/MinioController.java
+41
-9
mall-admin/src/main/java/com/macro/mall/dto/BucketPolicyConfigDto.java
...c/main/java/com/macro/mall/dto/BucketPolicyConfigDto.java
+31
-0
pom.xml
pom.xml
+1
-8
未找到文件。
mall-admin/src/main/java/com/macro/mall/controller/MinioController.java
浏览文件 @
f6652cf4
package
com.macro.mall.controller
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.macro.mall.common.api.CommonResult
;
import
com.macro.mall.dto.BucketPolicyConfigDto
;
import
com.macro.mall.dto.MinioUploadDto
;
import
io.minio.MinioClient
;
import
io.minio.policy.PolicyType
;
import
io.minio.*
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.slf4j.Logger
;
...
...
@@ -44,39 +47,68 @@ public class MinioController {
public
CommonResult
upload
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
try
{
//创建一个MinIO的Java客户端
MinioClient
minioClient
=
new
MinioClient
(
ENDPOINT
,
ACCESS_KEY
,
SECRET_KEY
);
boolean
isExist
=
minioClient
.
bucketExists
(
BUCKET_NAME
);
MinioClient
minioClient
=
MinioClient
.
builder
()
.
endpoint
(
ENDPOINT
)
.
credentials
(
ACCESS_KEY
,
SECRET_KEY
)
.
build
();
boolean
isExist
=
minioClient
.
bucketExists
(
BucketExistsArgs
.
builder
().
bucket
(
BUCKET_NAME
).
build
());
if
(
isExist
)
{
LOGGER
.
info
(
"存储桶已经存在!"
);
}
else
{
//创建存储桶并设置只读权限
minioClient
.
makeBucket
(
BUCKET_NAME
);
minioClient
.
setBucketPolicy
(
BUCKET_NAME
,
"*.*"
,
PolicyType
.
READ_ONLY
);
minioClient
.
makeBucket
(
MakeBucketArgs
.
builder
().
bucket
(
BUCKET_NAME
).
build
());
BucketPolicyConfigDto
bucketPolicyConfigDto
=
createBucketPolicyConfigDto
(
BUCKET_NAME
);
SetBucketPolicyArgs
setBucketPolicyArgs
=
SetBucketPolicyArgs
.
builder
()
.
bucket
(
BUCKET_NAME
)
.
config
(
JSONUtil
.
toJsonStr
(
bucketPolicyConfigDto
))
.
build
();
minioClient
.
setBucketPolicy
(
setBucketPolicyArgs
);
}
String
filename
=
file
.
getOriginalFilename
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyyMMdd"
);
// 设置存储对象名称
String
objectName
=
sdf
.
format
(
new
Date
())
+
"/"
+
filename
;
// 使用putObject上传一个文件到存储桶中
minioClient
.
putObject
(
BUCKET_NAME
,
objectName
,
file
.
getInputStream
(),
file
.
getContentType
());
PutObjectArgs
putObjectArgs
=
PutObjectArgs
.
builder
()
.
bucket
(
BUCKET_NAME
)
.
object
(
objectName
)
.
contentType
(
file
.
getContentType
())
.
stream
(
file
.
getInputStream
(),
file
.
getSize
(),
ObjectWriteArgs
.
MIN_MULTIPART_SIZE
).
build
();
minioClient
.
putObject
(
putObjectArgs
);
LOGGER
.
info
(
"文件上传成功!"
);
MinioUploadDto
minioUploadDto
=
new
MinioUploadDto
();
minioUploadDto
.
setName
(
filename
);
minioUploadDto
.
setUrl
(
ENDPOINT
+
"/"
+
BUCKET_NAME
+
"/"
+
objectName
);
return
CommonResult
.
success
(
minioUploadDto
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
LOGGER
.
info
(
"上传发生错误: {}!"
,
e
.
getMessage
());
}
return
CommonResult
.
failed
();
}
private
BucketPolicyConfigDto
createBucketPolicyConfigDto
(
String
bucketName
)
{
BucketPolicyConfigDto
.
Statement
statement
=
BucketPolicyConfigDto
.
Statement
.
builder
()
.
Effect
(
"Allow"
)
.
Principal
(
"*"
)
.
Action
(
"s3:GetObject"
)
.
Resource
(
"arn:aws:s3:::"
+
bucketName
+
"/*.**"
).
build
();
return
BucketPolicyConfigDto
.
builder
()
.
Version
(
"2012-10-17"
)
.
Statement
(
CollUtil
.
toList
(
statement
))
.
build
();
}
@ApiOperation
(
"文件删除"
)
@RequestMapping
(
value
=
"/delete"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
CommonResult
delete
(
@RequestParam
(
"objectName"
)
String
objectName
)
{
try
{
MinioClient
minioClient
=
new
MinioClient
(
ENDPOINT
,
ACCESS_KEY
,
SECRET_KEY
);
minioClient
.
removeObject
(
BUCKET_NAME
,
objectName
);
MinioClient
minioClient
=
MinioClient
.
builder
()
.
endpoint
(
ENDPOINT
)
.
credentials
(
ACCESS_KEY
,
SECRET_KEY
)
.
build
();
minioClient
.
removeObject
(
RemoveObjectArgs
.
builder
().
bucket
(
BUCKET_NAME
).
object
(
objectName
).
build
());
return
CommonResult
.
success
(
null
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
mall-admin/src/main/java/com/macro/mall/dto/BucketPolicyConfigDto.java
0 → 100644
浏览文件 @
f6652cf4
package
com.macro.mall.dto
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.List
;
/**
* Minio Bucket访问策略配置
* Created by macro on 2020/8/11.
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Builder
public
class
BucketPolicyConfigDto
{
private
String
Version
;
private
List
<
Statement
>
Statement
;
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Builder
public
static
class
Statement
{
private
String
Effect
;
private
String
Principal
;
private
String
Action
;
private
String
Resource
;
}
}
pom.xml
浏览文件 @
f6652cf4
...
...
@@ -47,8 +47,7 @@
<jjwt.version>
0.9.0
</jjwt.version>
<aliyun-oss.version>
2.5.0
</aliyun-oss.version>
<logstash-logback.version>
5.3
</logstash-logback.version>
<minio.version>
3.0.10
</minio.version>
<guava.version>
20.0
</guava.version>
<minio.version>
7.1.0
</minio.version>
<mall-common.version>
1.0-SNAPSHOT
</mall-common.version>
<mall-mbg.version>
1.0-SNAPSHOT
</mall-mbg.version>
<mall-security.version>
1.0-SNAPSHOT
</mall-security.version>
...
...
@@ -197,12 +196,6 @@
<artifactId>
minio
</artifactId>
<version>
${minio.version}
</version>
</dependency>
<!--统一Guava版本防止冲突-->
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
<version>
${guava.version}
</version>
</dependency>
</dependencies>
</dependencyManagement>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录