Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
mall
Commits
a9ae8c68
Commit
a9ae8c68
authored
Jan 01, 2020
by
macro
Browse files
添加MinIO文件上传支持
parent
7e57a2db
Changes
5
Hide whitespace changes
Inline
Side-by-side
mall-admin/pom.xml
View file @
a9ae8c68
...
...
@@ -33,6 +33,10 @@
<groupId>
net.logstash.logback
</groupId>
<artifactId>
logstash-logback-encoder
</artifactId>
</dependency>
<dependency>
<groupId>
io.minio
</groupId>
<artifactId>
minio
</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
...
...
mall-admin/src/main/java/com/macro/mall/controller/MinioController.java
0 → 100644
View file @
a9ae8c68
package
com.macro.mall.controller
;
import
com.macro.mall.common.api.CommonResult
;
import
com.macro.mall.dto.MinioUploadDto
;
import
io.minio.MinioClient
;
import
io.minio.policy.PolicyType
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* Created by macro on 2019/12/25.
*/
@Api
(
tags
=
"MinioController"
,
description
=
"MinIO对象存储管理"
)
@Controller
@RequestMapping
(
"/minio"
)
public
class
MinioController
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
MinioController
.
class
);
@Value
(
"${minio.endpoint}"
)
private
String
ENDPOINT
;
@Value
(
"${minio.bucketName}"
)
private
String
BUCKET_NAME
;
@Value
(
"${minio.accessKey}"
)
private
String
ACCESS_KEY
;
@Value
(
"${minio.secretKey}"
)
private
String
SECRET_KEY
;
@ApiOperation
(
"文件上传"
)
@RequestMapping
(
value
=
"/upload"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
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
);
if
(
isExist
)
{
LOGGER
.
info
(
"存储桶已经存在!"
);
}
else
{
//创建存储桶并设置只读权限
minioClient
.
makeBucket
(
BUCKET_NAME
);
minioClient
.
setBucketPolicy
(
BUCKET_NAME
,
"*.*"
,
PolicyType
.
READ_ONLY
);
}
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
());
LOGGER
.
info
(
"文件上传成功!"
);
MinioUploadDto
minioUploadDto
=
new
MinioUploadDto
();
minioUploadDto
.
setName
(
filename
);
minioUploadDto
.
setUrl
(
ENDPOINT
+
"/"
+
BUCKET_NAME
+
"/"
+
objectName
);
return
CommonResult
.
success
(
minioUploadDto
);
}
catch
(
Exception
e
)
{
LOGGER
.
info
(
"上传发生错误: {}!"
,
e
.
getMessage
());
}
return
CommonResult
.
failed
();
}
@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
);
return
CommonResult
.
success
(
null
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
CommonResult
.
failed
();
}
}
mall-admin/src/main/java/com/macro/mall/dto/MinioUploadDto.java
0 → 100644
View file @
a9ae8c68
package
com.macro.mall.dto
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* 文件上传返回结果
* Created by macro on 2019/12/25.
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
MinioUploadDto
{
private
String
url
;
private
String
name
;
}
mall-admin/src/main/resources/application.yml
View file @
a9ae8c68
spring
:
profiles
:
active
:
dev
#默认为开发环境
servlet
:
multipart
:
enabled
:
true
#开启文件上传
max-file-size
:
10MB
#限制文件上传大小为10M
mybatis
:
mapper-locations
:
...
...
@@ -29,6 +33,7 @@ secure:
-
/druid/**
-
/admin/login
-
/admin/register
-
/minio/upload
aliyun
:
oss
:
...
...
@@ -43,6 +48,12 @@ aliyun:
dir
:
prefix
:
mall/images/
# 上传文件夹路径前缀
minio
:
endpoint
:
http://192.168.3.101:9090
#MinIO服务所在地址
bucketName
:
mall
#存储桶名称
accessKey
:
minioadmin
#访问的key
secretKey
:
minioadmin
#访问的秘钥
logging
:
level
:
root
:
info
#日志配置DEBUG,INFO,WARN,ERROR
...
...
pom.xml
View file @
a9ae8c68
...
...
@@ -45,6 +45,7 @@
<jjwt.version>
0.9.0
</jjwt.version>
<aliyun-oss.version>
2.5.0
</aliyun-oss.version>
<logstash-logback.version>
4.8
</logstash-logback.version>
<minio.version>
3.0.10
</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>
...
...
@@ -175,6 +176,12 @@
<artifactId>
logstash-logback-encoder
</artifactId>
<version>
${logstash-logback.version}
</version>
</dependency>
<!--MinIO JAVA SDK-->
<dependency>
<groupId>
io.minio
</groupId>
<artifactId>
minio
</artifactId>
<version>
${minio.version}
</version>
</dependency>
</dependencies>
</dependencyManagement>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment