fix(storage): 修复MinIO文件上传和配置问题
- 修复文件上传时缺少后缀名的问题,添加对无后缀文件的处理逻辑 - 更新开发和生产环境的OSS配置,修改endpoint、accessKey和secretKey - 将文件大小限制从100调整为10 - 优化代码格式,修复方法参数换行和构建器链式调用的格式问题 - 统一多个版本中的MinIO仓库代码变更
This commit is contained in:
+19
-5
@@ -45,11 +45,13 @@ import io.minio.messages.Bucket;
|
||||
import io.minio.messages.Item;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -145,15 +147,25 @@ public class MinioRepository {
|
||||
* @param md5 文件md5
|
||||
* @return String 上传后的文件名,上传失败返回 null
|
||||
*/
|
||||
public SystemOssStorageTb upload(File tempFile, String originalFilename, long fileSize, String contentType,
|
||||
String md5) {
|
||||
public SystemOssStorageTb upload(
|
||||
File tempFile, String originalFilename, long fileSize, String contentType,
|
||||
String md5
|
||||
) {
|
||||
StorageOSSModel ossConfig = properties.getOss();
|
||||
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
||||
String type = FileTypeUtil.getType(tempFile);
|
||||
String prefix = KitFileUtil.getPrefix(tempFile);
|
||||
String suffix = KitFileUtil.getSuffix(tempFile);
|
||||
String fileCode = IdUtil.fastSimpleUUID();
|
||||
String fileName = fileCode + FileUtil.getSuffix(originalFilename);
|
||||
|
||||
String fileName;
|
||||
String realSuffix = FileUtil.getSuffix(originalFilename);
|
||||
if (StrUtil.isBlank(realSuffix)) {
|
||||
fileName = fileCode;
|
||||
} else {
|
||||
fileName = fileCode + "." + realSuffix;
|
||||
}
|
||||
|
||||
String objectName = KitDateUtil.getNowDateStr() + "/" + fileName;
|
||||
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
||||
@@ -279,8 +291,10 @@ public class MinioRepository {
|
||||
public void download(String fileName, HttpServletResponse res) {
|
||||
GetObjectArgs objectArgs =
|
||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
try (GetObjectResponse response = minioClient.getObject(objectArgs);
|
||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream()) {
|
||||
try (
|
||||
GetObjectResponse response = minioClient.getObject(objectArgs);
|
||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream()
|
||||
) {
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
while ((len = response.read(buf)) != -1) {
|
||||
|
||||
@@ -187,12 +187,12 @@ app:
|
||||
queue-capacity: 50
|
||||
# oss
|
||||
oss:
|
||||
max-size: 100
|
||||
max-size: 10
|
||||
minio:
|
||||
endpoint: http://127.0.0.1:9000
|
||||
endpoint: https://oss.odboy.cn
|
||||
bucketName: cutejava
|
||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
||||
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||
captcha:
|
||||
expireTime: 300
|
||||
# 序列化白名单
|
||||
|
||||
@@ -198,12 +198,12 @@ app:
|
||||
queue-capacity: 50
|
||||
# oss
|
||||
oss:
|
||||
max-size: 100
|
||||
max-size: 10
|
||||
minio:
|
||||
endpoint: http://127.0.0.1:9000
|
||||
endpoint: https://oss.odboy.cn
|
||||
bucketName: cutejava
|
||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
||||
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||
captcha:
|
||||
expireTime: 300
|
||||
# 序列化白名单
|
||||
|
||||
+29
-24
@@ -45,11 +45,13 @@ import io.minio.messages.Bucket;
|
||||
import io.minio.messages.Item;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -145,15 +147,24 @@ public class MinioRepository {
|
||||
* @param md5 文件md5
|
||||
* @return String 上传后的文件名,上传失败返回 null
|
||||
*/
|
||||
public SystemOssStorageTb upload(File tempFile, String originalFilename, long fileSize, String contentType,
|
||||
String md5) {
|
||||
public SystemOssStorageTb upload(
|
||||
File tempFile, String originalFilename, long fileSize, String contentType, String md5
|
||||
) {
|
||||
StorageOSSModel ossConfig = properties.getOss();
|
||||
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
||||
String type = FileTypeUtil.getType(tempFile);
|
||||
String prefix = KitFileUtil.getPrefix(tempFile);
|
||||
String suffix = KitFileUtil.getSuffix(tempFile);
|
||||
String fileCode = IdUtil.fastSimpleUUID();
|
||||
String fileName = fileCode + FileUtil.getSuffix(originalFilename);
|
||||
|
||||
String fileName;
|
||||
String realSuffix = FileUtil.getSuffix(originalFilename);
|
||||
if (StrUtil.isBlank(realSuffix)) {
|
||||
fileName = fileCode;
|
||||
} else {
|
||||
fileName = fileCode + "." + realSuffix;
|
||||
}
|
||||
|
||||
String objectName = KitDateUtil.getNowDateStr() + "/" + fileName;
|
||||
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
||||
@@ -171,8 +182,8 @@ public class MinioRepository {
|
||||
systemOssStorageTb.setFileCode(fileCode);
|
||||
systemOssStorageTb.setObjectName(objectName);
|
||||
try (InputStream fileInputStream = KitFileUtil.getInputStream(tempFile)) {
|
||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName)
|
||||
.stream(fileInputStream, fileSize, -1).contentType(contentType).build();
|
||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName).stream(fileInputStream, fileSize, -1)
|
||||
.contentType(contentType).build();
|
||||
minioClient.putObject(objectArgs);
|
||||
log.info("文件上传成功,并删除临时文件,文件名:{}", originalFilename);
|
||||
return systemOssStorageTb;
|
||||
@@ -206,9 +217,8 @@ public class MinioRepository {
|
||||
String objectName = KitDateUtil.getNowDateTimeStr() + "/" + fileName;
|
||||
log.info("准备上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||
try (InputStream fileInputStream = file.getInputStream()) {
|
||||
PutObjectArgs objectArgs =
|
||||
PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
||||
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
||||
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
||||
// 使用重试机制进行上传
|
||||
uploadWithRetry(objectArgs, 3);
|
||||
log.info("文件上传成功,objectName: {}", objectName);
|
||||
@@ -256,11 +266,10 @@ public class MinioRepository {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
GetPresignedObjectUrlArgs presignedUrlArgs =
|
||||
GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
||||
.object(fullFileName).method(Method.GET)
|
||||
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
||||
.expiry(3600 * 24 * 7).build();
|
||||
GetPresignedObjectUrlArgs presignedUrlArgs = GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
||||
.object(fullFileName).method(Method.GET)
|
||||
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
||||
.expiry(3600 * 24 * 7).build();
|
||||
String url = minioClient.getPresignedObjectUrl(presignedUrlArgs);
|
||||
log.info("生成预签名 URL 成功,fileName: {}, url: {}", fullFileName, url);
|
||||
return url;
|
||||
@@ -277,10 +286,10 @@ public class MinioRepository {
|
||||
* @param res HTTP 响应
|
||||
*/
|
||||
public void download(String fileName, HttpServletResponse res) {
|
||||
GetObjectArgs objectArgs =
|
||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
try (GetObjectResponse response = minioClient.getObject(objectArgs);
|
||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream()) {
|
||||
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
try (
|
||||
GetObjectResponse response = minioClient.getObject(objectArgs); FastByteArrayOutputStream os = new FastByteArrayOutputStream()
|
||||
) {
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
while ((len = response.read(buf)) != -1) {
|
||||
@@ -306,8 +315,7 @@ public class MinioRepository {
|
||||
* @param res HTTP 响应
|
||||
*/
|
||||
public void downloadOptimizedVersion(String fileName, HttpServletResponse res) {
|
||||
GetObjectArgs objectArgs =
|
||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
try (GetObjectResponse response = minioClient.getObject(objectArgs)) {
|
||||
// 增大缓冲区
|
||||
byte[] buf = new byte[1024 * 4];
|
||||
@@ -338,8 +346,7 @@ public class MinioRepository {
|
||||
*/
|
||||
public List<Item> queryAllObjects() {
|
||||
try {
|
||||
Iterable<Result<Item>> results = minioClient.listObjects(
|
||||
ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
||||
Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
||||
List<Item> items = new ArrayList<>();
|
||||
for (Result<Item> result : results) {
|
||||
items.add(result.get());
|
||||
@@ -359,9 +366,7 @@ public class MinioRepository {
|
||||
*/
|
||||
public boolean removeBucketFile(String fileName) {
|
||||
try {
|
||||
minioClient.removeObject(
|
||||
RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName)
|
||||
.build());
|
||||
minioClient.removeObject(RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build());
|
||||
log.info("删除文件成功,fileName: {}", fileName);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -125,12 +125,12 @@ app:
|
||||
queue-capacity: 50
|
||||
# oss
|
||||
oss:
|
||||
max-size: 100
|
||||
max-size: 10
|
||||
minio:
|
||||
endpoint: http://127.0.0.1:9000
|
||||
endpoint: https://oss.odboy.cn
|
||||
bucketName: cutejava
|
||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
||||
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||
captcha:
|
||||
expireTime: 300
|
||||
# 序列化白名单
|
||||
|
||||
@@ -136,12 +136,12 @@ app:
|
||||
queue-capacity: 50
|
||||
# oss
|
||||
oss:
|
||||
max-size: 100
|
||||
max-size: 10
|
||||
minio:
|
||||
endpoint: http://127.0.0.1:9000
|
||||
endpoint: https://oss.odboy.cn
|
||||
bucketName: cutejava
|
||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
||||
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||
captcha:
|
||||
expireTime: 300
|
||||
# 序列化白名单
|
||||
|
||||
+29
-24
@@ -43,6 +43,7 @@ import io.minio.Result;
|
||||
import io.minio.http.Method;
|
||||
import io.minio.messages.Bucket;
|
||||
import io.minio.messages.Item;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
@@ -50,6 +51,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -145,15 +147,24 @@ public class MinioRepository {
|
||||
* @param md5 文件md5
|
||||
* @return String 上传后的文件名,上传失败返回 null
|
||||
*/
|
||||
public SystemOssStorageTb upload(File tempFile, String originalFilename, long fileSize, String contentType,
|
||||
String md5) {
|
||||
public SystemOssStorageTb upload(
|
||||
File tempFile, String originalFilename, long fileSize, String contentType, String md5
|
||||
) {
|
||||
StorageOSSModel ossConfig = properties.getOss();
|
||||
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
||||
String type = FileTypeUtil.getType(tempFile);
|
||||
String prefix = KitFileUtil.getPrefix(tempFile);
|
||||
String suffix = KitFileUtil.getSuffix(tempFile);
|
||||
String fileCode = IdUtil.fastSimpleUUID();
|
||||
String fileName = fileCode + FileUtil.getSuffix(originalFilename);
|
||||
|
||||
String fileName;
|
||||
String realSuffix = FileUtil.getSuffix(originalFilename);
|
||||
if (StrUtil.isBlank(realSuffix)) {
|
||||
fileName = fileCode;
|
||||
} else {
|
||||
fileName = fileCode + "." + realSuffix;
|
||||
}
|
||||
|
||||
String objectName = KitDateUtil.getNowDateStr() + "/" + fileName;
|
||||
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
||||
@@ -171,8 +182,8 @@ public class MinioRepository {
|
||||
systemOssStorageTb.setFileCode(fileCode);
|
||||
systemOssStorageTb.setObjectName(objectName);
|
||||
try (InputStream fileInputStream = KitFileUtil.getInputStream(tempFile)) {
|
||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName)
|
||||
.stream(fileInputStream, fileSize, -1).contentType(contentType).build();
|
||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName).stream(fileInputStream, fileSize, -1)
|
||||
.contentType(contentType).build();
|
||||
minioClient.putObject(objectArgs);
|
||||
log.info("文件上传成功,并删除临时文件,文件名:{}", originalFilename);
|
||||
return systemOssStorageTb;
|
||||
@@ -206,9 +217,8 @@ public class MinioRepository {
|
||||
String objectName = KitDateUtil.getNowDateTimeStr() + "/" + fileName;
|
||||
log.info("准备上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||
try (InputStream fileInputStream = file.getInputStream()) {
|
||||
PutObjectArgs objectArgs =
|
||||
PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
||||
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
||||
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
||||
// 使用重试机制进行上传
|
||||
uploadWithRetry(objectArgs, 3);
|
||||
log.info("文件上传成功,objectName: {}", objectName);
|
||||
@@ -256,11 +266,10 @@ public class MinioRepository {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
GetPresignedObjectUrlArgs presignedUrlArgs =
|
||||
GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
||||
.object(fullFileName).method(Method.GET)
|
||||
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
||||
.expiry(3600 * 24 * 7).build();
|
||||
GetPresignedObjectUrlArgs presignedUrlArgs = GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
||||
.object(fullFileName).method(Method.GET)
|
||||
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
||||
.expiry(3600 * 24 * 7).build();
|
||||
String url = minioClient.getPresignedObjectUrl(presignedUrlArgs);
|
||||
log.info("生成预签名 URL 成功,fileName: {}, url: {}", fullFileName, url);
|
||||
return url;
|
||||
@@ -277,10 +286,10 @@ public class MinioRepository {
|
||||
* @param res HTTP 响应
|
||||
*/
|
||||
public void download(String fileName, HttpServletResponse res) {
|
||||
GetObjectArgs objectArgs =
|
||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
try (GetObjectResponse response = minioClient.getObject(objectArgs);
|
||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream()) {
|
||||
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
try (
|
||||
GetObjectResponse response = minioClient.getObject(objectArgs); FastByteArrayOutputStream os = new FastByteArrayOutputStream()
|
||||
) {
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
while ((len = response.read(buf)) != -1) {
|
||||
@@ -306,8 +315,7 @@ public class MinioRepository {
|
||||
* @param res HTTP 响应
|
||||
*/
|
||||
public void downloadOptimizedVersion(String fileName, HttpServletResponse res) {
|
||||
GetObjectArgs objectArgs =
|
||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||
try (GetObjectResponse response = minioClient.getObject(objectArgs)) {
|
||||
// 增大缓冲区
|
||||
byte[] buf = new byte[1024 * 4];
|
||||
@@ -338,8 +346,7 @@ public class MinioRepository {
|
||||
*/
|
||||
public List<Item> queryAllObjects() {
|
||||
try {
|
||||
Iterable<Result<Item>> results = minioClient.listObjects(
|
||||
ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
||||
Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
||||
List<Item> items = new ArrayList<>();
|
||||
for (Result<Item> result : results) {
|
||||
items.add(result.get());
|
||||
@@ -359,9 +366,7 @@ public class MinioRepository {
|
||||
*/
|
||||
public boolean removeBucketFile(String fileName) {
|
||||
try {
|
||||
minioClient.removeObject(
|
||||
RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName)
|
||||
.build());
|
||||
minioClient.removeObject(RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build());
|
||||
log.info("删除文件成功,fileName: {}", fileName);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -203,12 +203,12 @@ app:
|
||||
queue-capacity: 50
|
||||
# oss
|
||||
oss:
|
||||
max-size: 100
|
||||
max-size: 10
|
||||
minio:
|
||||
endpoint: http://192.168.100.128:9000
|
||||
endpoint: https://oss.odboy.cn
|
||||
bucketName: cutejava
|
||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
||||
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||
captcha:
|
||||
expireTime: 300
|
||||
# 序列化白名单
|
||||
|
||||
@@ -202,12 +202,12 @@ app:
|
||||
queue-capacity: 50
|
||||
# oss
|
||||
oss:
|
||||
max-size: 100
|
||||
max-size: 10
|
||||
minio:
|
||||
endpoint: http://192.168.100.128:9000
|
||||
endpoint: https://oss.odboy.cn
|
||||
bucketName: cutejava
|
||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
||||
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||
captcha:
|
||||
expireTime: 300
|
||||
# 序列化白名单
|
||||
|
||||
Reference in New Issue
Block a user