添加MinIO文件上传支持
This commit is contained in:
parent
7e57a2dbda
commit
a9ae8c684b
@ -33,6 +33,10 @@
|
|||||||
<groupId>net.logstash.logback</groupId>
|
<groupId>net.logstash.logback</groupId>
|
||||||
<artifactId>logstash-logback-encoder</artifactId>
|
<artifactId>logstash-logback-encoder</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.minio</groupId>
|
||||||
|
<artifactId>minio</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
@ -0,0 +1,85 @@
|
|||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
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;
|
||||||
|
}
|
@ -1,6 +1,10 @@
|
|||||||
spring:
|
spring:
|
||||||
profiles:
|
profiles:
|
||||||
active: dev #默认为开发环境
|
active: dev #默认为开发环境
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
enabled: true #开启文件上传
|
||||||
|
max-file-size: 10MB #限制文件上传大小为10M
|
||||||
|
|
||||||
mybatis:
|
mybatis:
|
||||||
mapper-locations:
|
mapper-locations:
|
||||||
@ -29,6 +33,7 @@ secure:
|
|||||||
- /druid/**
|
- /druid/**
|
||||||
- /admin/login
|
- /admin/login
|
||||||
- /admin/register
|
- /admin/register
|
||||||
|
- /minio/upload
|
||||||
|
|
||||||
aliyun:
|
aliyun:
|
||||||
oss:
|
oss:
|
||||||
@ -43,6 +48,12 @@ aliyun:
|
|||||||
dir:
|
dir:
|
||||||
prefix: mall/images/ # 上传文件夹路径前缀
|
prefix: mall/images/ # 上传文件夹路径前缀
|
||||||
|
|
||||||
|
minio:
|
||||||
|
endpoint: http://192.168.3.101:9090 #MinIO服务所在地址
|
||||||
|
bucketName: mall #存储桶名称
|
||||||
|
accessKey: minioadmin #访问的key
|
||||||
|
secretKey: minioadmin #访问的秘钥
|
||||||
|
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
root: info #日志配置DEBUG,INFO,WARN,ERROR
|
root: info #日志配置DEBUG,INFO,WARN,ERROR
|
||||||
|
7
pom.xml
7
pom.xml
@ -45,6 +45,7 @@
|
|||||||
<jjwt.version>0.9.0</jjwt.version>
|
<jjwt.version>0.9.0</jjwt.version>
|
||||||
<aliyun-oss.version>2.5.0</aliyun-oss.version>
|
<aliyun-oss.version>2.5.0</aliyun-oss.version>
|
||||||
<logstash-logback.version>4.8</logstash-logback.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-common.version>1.0-SNAPSHOT</mall-common.version>
|
||||||
<mall-mbg.version>1.0-SNAPSHOT</mall-mbg.version>
|
<mall-mbg.version>1.0-SNAPSHOT</mall-mbg.version>
|
||||||
<mall-security.version>1.0-SNAPSHOT</mall-security.version>
|
<mall-security.version>1.0-SNAPSHOT</mall-security.version>
|
||||||
@ -175,6 +176,12 @@
|
|||||||
<artifactId>logstash-logback-encoder</artifactId>
|
<artifactId>logstash-logback-encoder</artifactId>
|
||||||
<version>${logstash-logback.version}</version>
|
<version>${logstash-logback.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!--MinIO JAVA SDK-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.minio</groupId>
|
||||||
|
<artifactId>minio</artifactId>
|
||||||
|
<version>${minio.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user