|
|
@@ -1,6 +1,8 @@
|
|
|
package com.bx.implatform.thirdparty;
|
|
|
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
|
import com.bx.implatform.util.DateTimeUtils;
|
|
|
+import com.bx.implatform.util.FileUtil;
|
|
|
import io.minio.*;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -38,9 +40,7 @@ public class MinioService {
|
|
|
*/
|
|
|
public void makeBucket(String bucketName) {
|
|
|
try {
|
|
|
- minioClient.makeBucket(MakeBucketArgs.builder()
|
|
|
- .bucket(bucketName)
|
|
|
- .build());
|
|
|
+ minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
|
|
|
} catch (Exception e) {
|
|
|
log.error("创建bucket失败,", e);
|
|
|
}
|
|
|
@@ -52,18 +52,9 @@ public class MinioService {
|
|
|
public void setBucketPublic(String bucketName) {
|
|
|
try {
|
|
|
// 设置公开
|
|
|
- String sb = "{\"Version\":\"2012-10-17\"," +
|
|
|
- "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" +
|
|
|
- "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," +
|
|
|
- "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucketName +
|
|
|
- "\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\",\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" +
|
|
|
- bucketName +
|
|
|
- "/*\"]}]}";
|
|
|
- minioClient.setBucketPolicy(
|
|
|
- SetBucketPolicyArgs.builder()
|
|
|
- .bucket(bucketName)
|
|
|
- .config(sb)
|
|
|
- .build());
|
|
|
+ String sb =
|
|
|
+ "{\"Version\":\"2012-10-17\"," + "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" + "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," + "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + "\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\",\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + "/*\"]}]}";
|
|
|
+ minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(sb).build());
|
|
|
} catch (Exception e) {
|
|
|
log.error("创建bucket失败,", e);
|
|
|
}
|
|
|
@@ -82,10 +73,10 @@ public class MinioService {
|
|
|
if (StringUtils.isBlank(originalFilename)) {
|
|
|
throw new RuntimeException();
|
|
|
}
|
|
|
- String fileName = System.currentTimeMillis() + "";
|
|
|
- if (originalFilename.lastIndexOf(".") >= 0) {
|
|
|
- fileName += originalFilename.substring(originalFilename.lastIndexOf("."));
|
|
|
- }
|
|
|
+ // 加入随机数,防止文件重名
|
|
|
+ String fileName = FileUtil.excludeExtension(originalFilename);
|
|
|
+ fileName += "_" + RandomUtil.randomString(4);
|
|
|
+ fileName += "." + FileUtil.getFileExtension(originalFilename);
|
|
|
String objectName = DateTimeUtils.getFormatDate(new Date(), DateTimeUtils.PARTDATEFORMAT) + "/" + fileName;
|
|
|
try {
|
|
|
InputStream stream = new ByteArrayInputStream(file.getBytes());
|
|
|
@@ -111,13 +102,15 @@ public class MinioService {
|
|
|
* @return objectName
|
|
|
*/
|
|
|
public String upload(String bucketName, String path, String name, byte[] fileByte, String contentType) {
|
|
|
-
|
|
|
- String fileName = System.currentTimeMillis() + name.substring(name.lastIndexOf("."));
|
|
|
+ // 加入随机数,防止文件重名
|
|
|
+ String fileName = FileUtil.excludeExtension(name);
|
|
|
+ fileName += "_" + RandomUtil.randomString(4);
|
|
|
+ fileName += "." + FileUtil.getFileExtension(name);
|
|
|
String objectName = DateTimeUtils.getFormatDate(new Date(), DateTimeUtils.PARTDATEFORMAT) + "/" + fileName;
|
|
|
try {
|
|
|
InputStream stream = new ByteArrayInputStream(fileByte);
|
|
|
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(bucketName).object(path + "/" + objectName)
|
|
|
- .stream(stream, fileByte.length, -1).contentType(contentType).build();
|
|
|
+ .stream(stream, fileByte.length, -1).contentType(contentType).build();
|
|
|
//文件名称相同会覆盖
|
|
|
minioClient.putObject(objectArgs);
|
|
|
} catch (Exception e) {
|
|
|
@@ -127,7 +120,6 @@ public class MinioService {
|
|
|
return objectName;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 删除
|
|
|
*
|
|
|
@@ -138,7 +130,8 @@ public class MinioService {
|
|
|
*/
|
|
|
public boolean remove(String bucketName, String path, String fileName) {
|
|
|
try {
|
|
|
- minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(path + "/" + fileName).build());
|
|
|
+ minioClient.removeObject(
|
|
|
+ RemoveObjectArgs.builder().bucket(bucketName).object(path + "/" + fileName).build());
|
|
|
} catch (Exception e) {
|
|
|
log.error("删除文件失败,", e);
|
|
|
return false;
|
|
|
@@ -156,7 +149,7 @@ public class MinioService {
|
|
|
*/
|
|
|
public Boolean isExist(String bucketName, String path, String fileName) {
|
|
|
try {
|
|
|
- minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(path + "/" + fileName).build());
|
|
|
+ minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(path + "/" + fileName).build());
|
|
|
} catch (Exception e) {
|
|
|
return false;
|
|
|
}
|