MinIO版本升级
This commit is contained in:
parent
3af3b81f1b
commit
f6652cf46f
@ -1,9 +1,12 @@
|
|||||||
package com.macro.mall.controller;
|
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.common.api.CommonResult;
|
||||||
|
import com.macro.mall.dto.BucketPolicyConfigDto;
|
||||||
import com.macro.mall.dto.MinioUploadDto;
|
import com.macro.mall.dto.MinioUploadDto;
|
||||||
import io.minio.MinioClient;
|
import io.minio.*;
|
||||||
import io.minio.policy.PolicyType;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -44,39 +47,68 @@ public class MinioController {
|
|||||||
public CommonResult upload(@RequestParam("file") MultipartFile file) {
|
public CommonResult upload(@RequestParam("file") MultipartFile file) {
|
||||||
try {
|
try {
|
||||||
//创建一个MinIO的Java客户端
|
//创建一个MinIO的Java客户端
|
||||||
MinioClient minioClient = new MinioClient(ENDPOINT, ACCESS_KEY, SECRET_KEY);
|
MinioClient minioClient =MinioClient.builder()
|
||||||
boolean isExist = minioClient.bucketExists(BUCKET_NAME);
|
.endpoint(ENDPOINT)
|
||||||
|
.credentials(ACCESS_KEY,SECRET_KEY)
|
||||||
|
.build();
|
||||||
|
boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(BUCKET_NAME).build());
|
||||||
if (isExist) {
|
if (isExist) {
|
||||||
LOGGER.info("存储桶已经存在!");
|
LOGGER.info("存储桶已经存在!");
|
||||||
} else {
|
} else {
|
||||||
//创建存储桶并设置只读权限
|
//创建存储桶并设置只读权限
|
||||||
minioClient.makeBucket(BUCKET_NAME);
|
minioClient.makeBucket(MakeBucketArgs.builder().bucket(BUCKET_NAME).build());
|
||||||
minioClient.setBucketPolicy(BUCKET_NAME, "*.*", PolicyType.READ_ONLY);
|
BucketPolicyConfigDto bucketPolicyConfigDto = createBucketPolicyConfigDto(BUCKET_NAME);
|
||||||
|
SetBucketPolicyArgs setBucketPolicyArgs = SetBucketPolicyArgs.builder()
|
||||||
|
.bucket(BUCKET_NAME)
|
||||||
|
.config(JSONUtil.toJsonStr(bucketPolicyConfigDto))
|
||||||
|
.build();
|
||||||
|
minioClient.setBucketPolicy(setBucketPolicyArgs);
|
||||||
}
|
}
|
||||||
String filename = file.getOriginalFilename();
|
String filename = file.getOriginalFilename();
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
||||||
// 设置存储对象名称
|
// 设置存储对象名称
|
||||||
String objectName = sdf.format(new Date()) + "/" + filename;
|
String objectName = sdf.format(new Date()) + "/" + filename;
|
||||||
// 使用putObject上传一个文件到存储桶中
|
// 使用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("文件上传成功!");
|
LOGGER.info("文件上传成功!");
|
||||||
MinioUploadDto minioUploadDto = new MinioUploadDto();
|
MinioUploadDto minioUploadDto = new MinioUploadDto();
|
||||||
minioUploadDto.setName(filename);
|
minioUploadDto.setName(filename);
|
||||||
minioUploadDto.setUrl(ENDPOINT + "/" + BUCKET_NAME + "/" + objectName);
|
minioUploadDto.setUrl(ENDPOINT + "/" + BUCKET_NAME + "/" + objectName);
|
||||||
return CommonResult.success(minioUploadDto);
|
return CommonResult.success(minioUploadDto);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
LOGGER.info("上传发生错误: {}!", e.getMessage());
|
LOGGER.info("上传发生错误: {}!", e.getMessage());
|
||||||
}
|
}
|
||||||
return CommonResult.failed();
|
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("文件删除")
|
@ApiOperation("文件删除")
|
||||||
@RequestMapping(value = "/delete", method = RequestMethod.POST)
|
@RequestMapping(value = "/delete", method = RequestMethod.POST)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public CommonResult delete(@RequestParam("objectName") String objectName) {
|
public CommonResult delete(@RequestParam("objectName") String objectName) {
|
||||||
try {
|
try {
|
||||||
MinioClient minioClient = new MinioClient(ENDPOINT, ACCESS_KEY, SECRET_KEY);
|
MinioClient minioClient = MinioClient.builder()
|
||||||
minioClient.removeObject(BUCKET_NAME, objectName);
|
.endpoint(ENDPOINT)
|
||||||
|
.credentials(ACCESS_KEY,SECRET_KEY)
|
||||||
|
.build();
|
||||||
|
minioClient.removeObject(RemoveObjectArgs.builder().bucket(BUCKET_NAME).object(objectName).build());
|
||||||
return CommonResult.success(null);
|
return CommonResult.success(null);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
9
pom.xml
9
pom.xml
@ -47,8 +47,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>5.3</logstash-logback.version>
|
<logstash-logback.version>5.3</logstash-logback.version>
|
||||||
<minio.version>3.0.10</minio.version>
|
<minio.version>7.1.0</minio.version>
|
||||||
<guava.version>20.0</guava.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>
|
||||||
@ -197,12 +196,6 @@
|
|||||||
<artifactId>minio</artifactId>
|
<artifactId>minio</artifactId>
|
||||||
<version>${minio.version}</version>
|
<version>${minio.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--统一Guava版本防止冲突-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.guava</groupId>
|
|
||||||
<artifactId>guava</artifactId>
|
|
||||||
<version>${guava.version}</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user