MinIO版本升级
This commit is contained in:
parent
3af3b81f1b
commit
f6652cf46f
@ -1,9 +1,12 @@
|
||||
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();
|
||||
|
@ -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>
|
||||
<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>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user