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 io.minio.messages.Item;
|
||||||
import jakarta.servlet.ServletOutputStream;
|
import jakarta.servlet.ServletOutputStream;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -145,15 +147,25 @@ public class MinioRepository {
|
|||||||
* @param md5 文件md5
|
* @param md5 文件md5
|
||||||
* @return String 上传后的文件名,上传失败返回 null
|
* @return String 上传后的文件名,上传失败返回 null
|
||||||
*/
|
*/
|
||||||
public SystemOssStorageTb upload(File tempFile, String originalFilename, long fileSize, String contentType,
|
public SystemOssStorageTb upload(
|
||||||
String md5) {
|
File tempFile, String originalFilename, long fileSize, String contentType,
|
||||||
|
String md5
|
||||||
|
) {
|
||||||
StorageOSSModel ossConfig = properties.getOss();
|
StorageOSSModel ossConfig = properties.getOss();
|
||||||
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
||||||
String type = FileTypeUtil.getType(tempFile);
|
String type = FileTypeUtil.getType(tempFile);
|
||||||
String prefix = KitFileUtil.getPrefix(tempFile);
|
String prefix = KitFileUtil.getPrefix(tempFile);
|
||||||
String suffix = KitFileUtil.getSuffix(tempFile);
|
String suffix = KitFileUtil.getSuffix(tempFile);
|
||||||
String fileCode = IdUtil.fastSimpleUUID();
|
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;
|
String objectName = KitDateUtil.getNowDateStr() + "/" + fileName;
|
||||||
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||||
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
||||||
@@ -279,8 +291,10 @@ public class MinioRepository {
|
|||||||
public void download(String fileName, HttpServletResponse res) {
|
public void download(String fileName, HttpServletResponse res) {
|
||||||
GetObjectArgs objectArgs =
|
GetObjectArgs objectArgs =
|
||||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||||
try (GetObjectResponse response = minioClient.getObject(objectArgs);
|
try (
|
||||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream()) {
|
GetObjectResponse response = minioClient.getObject(objectArgs);
|
||||||
|
FastByteArrayOutputStream os = new FastByteArrayOutputStream()
|
||||||
|
) {
|
||||||
byte[] buf = new byte[1024];
|
byte[] buf = new byte[1024];
|
||||||
int len;
|
int len;
|
||||||
while ((len = response.read(buf)) != -1) {
|
while ((len = response.read(buf)) != -1) {
|
||||||
|
|||||||
@@ -187,12 +187,12 @@ app:
|
|||||||
queue-capacity: 50
|
queue-capacity: 50
|
||||||
# oss
|
# oss
|
||||||
oss:
|
oss:
|
||||||
max-size: 100
|
max-size: 10
|
||||||
minio:
|
minio:
|
||||||
endpoint: http://127.0.0.1:9000
|
endpoint: https://oss.odboy.cn
|
||||||
bucketName: cutejava
|
bucketName: cutejava
|
||||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||||
captcha:
|
captcha:
|
||||||
expireTime: 300
|
expireTime: 300
|
||||||
# 序列化白名单
|
# 序列化白名单
|
||||||
|
|||||||
@@ -198,12 +198,12 @@ app:
|
|||||||
queue-capacity: 50
|
queue-capacity: 50
|
||||||
# oss
|
# oss
|
||||||
oss:
|
oss:
|
||||||
max-size: 100
|
max-size: 10
|
||||||
minio:
|
minio:
|
||||||
endpoint: http://127.0.0.1:9000
|
endpoint: https://oss.odboy.cn
|
||||||
bucketName: cutejava
|
bucketName: cutejava
|
||||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||||
captcha:
|
captcha:
|
||||||
expireTime: 300
|
expireTime: 300
|
||||||
# 序列化白名单
|
# 序列化白名单
|
||||||
|
|||||||
+29
-24
@@ -45,11 +45,13 @@ import io.minio.messages.Bucket;
|
|||||||
import io.minio.messages.Item;
|
import io.minio.messages.Item;
|
||||||
import jakarta.servlet.ServletOutputStream;
|
import jakarta.servlet.ServletOutputStream;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -145,15 +147,24 @@ public class MinioRepository {
|
|||||||
* @param md5 文件md5
|
* @param md5 文件md5
|
||||||
* @return String 上传后的文件名,上传失败返回 null
|
* @return String 上传后的文件名,上传失败返回 null
|
||||||
*/
|
*/
|
||||||
public SystemOssStorageTb upload(File tempFile, String originalFilename, long fileSize, String contentType,
|
public SystemOssStorageTb upload(
|
||||||
String md5) {
|
File tempFile, String originalFilename, long fileSize, String contentType, String md5
|
||||||
|
) {
|
||||||
StorageOSSModel ossConfig = properties.getOss();
|
StorageOSSModel ossConfig = properties.getOss();
|
||||||
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
||||||
String type = FileTypeUtil.getType(tempFile);
|
String type = FileTypeUtil.getType(tempFile);
|
||||||
String prefix = KitFileUtil.getPrefix(tempFile);
|
String prefix = KitFileUtil.getPrefix(tempFile);
|
||||||
String suffix = KitFileUtil.getSuffix(tempFile);
|
String suffix = KitFileUtil.getSuffix(tempFile);
|
||||||
String fileCode = IdUtil.fastSimpleUUID();
|
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;
|
String objectName = KitDateUtil.getNowDateStr() + "/" + fileName;
|
||||||
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||||
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
||||||
@@ -171,8 +182,8 @@ public class MinioRepository {
|
|||||||
systemOssStorageTb.setFileCode(fileCode);
|
systemOssStorageTb.setFileCode(fileCode);
|
||||||
systemOssStorageTb.setObjectName(objectName);
|
systemOssStorageTb.setObjectName(objectName);
|
||||||
try (InputStream fileInputStream = KitFileUtil.getInputStream(tempFile)) {
|
try (InputStream fileInputStream = KitFileUtil.getInputStream(tempFile)) {
|
||||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName)
|
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName).stream(fileInputStream, fileSize, -1)
|
||||||
.stream(fileInputStream, fileSize, -1).contentType(contentType).build();
|
.contentType(contentType).build();
|
||||||
minioClient.putObject(objectArgs);
|
minioClient.putObject(objectArgs);
|
||||||
log.info("文件上传成功,并删除临时文件,文件名:{}", originalFilename);
|
log.info("文件上传成功,并删除临时文件,文件名:{}", originalFilename);
|
||||||
return systemOssStorageTb;
|
return systemOssStorageTb;
|
||||||
@@ -206,9 +217,8 @@ public class MinioRepository {
|
|||||||
String objectName = KitDateUtil.getNowDateTimeStr() + "/" + fileName;
|
String objectName = KitDateUtil.getNowDateTimeStr() + "/" + fileName;
|
||||||
log.info("准备上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
log.info("准备上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||||
try (InputStream fileInputStream = file.getInputStream()) {
|
try (InputStream fileInputStream = file.getInputStream()) {
|
||||||
PutObjectArgs objectArgs =
|
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
||||||
PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
||||||
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
|
||||||
// 使用重试机制进行上传
|
// 使用重试机制进行上传
|
||||||
uploadWithRetry(objectArgs, 3);
|
uploadWithRetry(objectArgs, 3);
|
||||||
log.info("文件上传成功,objectName: {}", objectName);
|
log.info("文件上传成功,objectName: {}", objectName);
|
||||||
@@ -256,11 +266,10 @@ public class MinioRepository {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
GetPresignedObjectUrlArgs presignedUrlArgs =
|
GetPresignedObjectUrlArgs presignedUrlArgs = GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
||||||
GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
.object(fullFileName).method(Method.GET)
|
||||||
.object(fullFileName).method(Method.GET)
|
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
||||||
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
.expiry(3600 * 24 * 7).build();
|
||||||
.expiry(3600 * 24 * 7).build();
|
|
||||||
String url = minioClient.getPresignedObjectUrl(presignedUrlArgs);
|
String url = minioClient.getPresignedObjectUrl(presignedUrlArgs);
|
||||||
log.info("生成预签名 URL 成功,fileName: {}, url: {}", fullFileName, url);
|
log.info("生成预签名 URL 成功,fileName: {}, url: {}", fullFileName, url);
|
||||||
return url;
|
return url;
|
||||||
@@ -277,10 +286,10 @@ public class MinioRepository {
|
|||||||
* @param res HTTP 响应
|
* @param res HTTP 响应
|
||||||
*/
|
*/
|
||||||
public void download(String fileName, HttpServletResponse res) {
|
public void download(String fileName, HttpServletResponse res) {
|
||||||
GetObjectArgs objectArgs =
|
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
try (
|
||||||
try (GetObjectResponse response = minioClient.getObject(objectArgs);
|
GetObjectResponse response = minioClient.getObject(objectArgs); FastByteArrayOutputStream os = new FastByteArrayOutputStream()
|
||||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream()) {
|
) {
|
||||||
byte[] buf = new byte[1024];
|
byte[] buf = new byte[1024];
|
||||||
int len;
|
int len;
|
||||||
while ((len = response.read(buf)) != -1) {
|
while ((len = response.read(buf)) != -1) {
|
||||||
@@ -306,8 +315,7 @@ public class MinioRepository {
|
|||||||
* @param res HTTP 响应
|
* @param res HTTP 响应
|
||||||
*/
|
*/
|
||||||
public void downloadOptimizedVersion(String fileName, HttpServletResponse res) {
|
public void downloadOptimizedVersion(String fileName, HttpServletResponse res) {
|
||||||
GetObjectArgs objectArgs =
|
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
|
||||||
try (GetObjectResponse response = minioClient.getObject(objectArgs)) {
|
try (GetObjectResponse response = minioClient.getObject(objectArgs)) {
|
||||||
// 增大缓冲区
|
// 增大缓冲区
|
||||||
byte[] buf = new byte[1024 * 4];
|
byte[] buf = new byte[1024 * 4];
|
||||||
@@ -338,8 +346,7 @@ public class MinioRepository {
|
|||||||
*/
|
*/
|
||||||
public List<Item> queryAllObjects() {
|
public List<Item> queryAllObjects() {
|
||||||
try {
|
try {
|
||||||
Iterable<Result<Item>> results = minioClient.listObjects(
|
Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
||||||
ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
|
||||||
List<Item> items = new ArrayList<>();
|
List<Item> items = new ArrayList<>();
|
||||||
for (Result<Item> result : results) {
|
for (Result<Item> result : results) {
|
||||||
items.add(result.get());
|
items.add(result.get());
|
||||||
@@ -359,9 +366,7 @@ public class MinioRepository {
|
|||||||
*/
|
*/
|
||||||
public boolean removeBucketFile(String fileName) {
|
public boolean removeBucketFile(String fileName) {
|
||||||
try {
|
try {
|
||||||
minioClient.removeObject(
|
minioClient.removeObject(RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build());
|
||||||
RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName)
|
|
||||||
.build());
|
|
||||||
log.info("删除文件成功,fileName: {}", fileName);
|
log.info("删除文件成功,fileName: {}", fileName);
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -125,12 +125,12 @@ app:
|
|||||||
queue-capacity: 50
|
queue-capacity: 50
|
||||||
# oss
|
# oss
|
||||||
oss:
|
oss:
|
||||||
max-size: 100
|
max-size: 10
|
||||||
minio:
|
minio:
|
||||||
endpoint: http://127.0.0.1:9000
|
endpoint: https://oss.odboy.cn
|
||||||
bucketName: cutejava
|
bucketName: cutejava
|
||||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||||
captcha:
|
captcha:
|
||||||
expireTime: 300
|
expireTime: 300
|
||||||
# 序列化白名单
|
# 序列化白名单
|
||||||
|
|||||||
@@ -136,12 +136,12 @@ app:
|
|||||||
queue-capacity: 50
|
queue-capacity: 50
|
||||||
# oss
|
# oss
|
||||||
oss:
|
oss:
|
||||||
max-size: 100
|
max-size: 10
|
||||||
minio:
|
minio:
|
||||||
endpoint: http://127.0.0.1:9000
|
endpoint: https://oss.odboy.cn
|
||||||
bucketName: cutejava
|
bucketName: cutejava
|
||||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||||
captcha:
|
captcha:
|
||||||
expireTime: 300
|
expireTime: 300
|
||||||
# 序列化白名单
|
# 序列化白名单
|
||||||
|
|||||||
+29
-24
@@ -43,6 +43,7 @@ import io.minio.Result;
|
|||||||
import io.minio.http.Method;
|
import io.minio.http.Method;
|
||||||
import io.minio.messages.Bucket;
|
import io.minio.messages.Bucket;
|
||||||
import io.minio.messages.Item;
|
import io.minio.messages.Item;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -50,6 +51,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletOutputStream;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -145,15 +147,24 @@ public class MinioRepository {
|
|||||||
* @param md5 文件md5
|
* @param md5 文件md5
|
||||||
* @return String 上传后的文件名,上传失败返回 null
|
* @return String 上传后的文件名,上传失败返回 null
|
||||||
*/
|
*/
|
||||||
public SystemOssStorageTb upload(File tempFile, String originalFilename, long fileSize, String contentType,
|
public SystemOssStorageTb upload(
|
||||||
String md5) {
|
File tempFile, String originalFilename, long fileSize, String contentType, String md5
|
||||||
|
) {
|
||||||
StorageOSSModel ossConfig = properties.getOss();
|
StorageOSSModel ossConfig = properties.getOss();
|
||||||
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
OSSConfigModel ossMinioConfig = ossConfig.getMinio();
|
||||||
String type = FileTypeUtil.getType(tempFile);
|
String type = FileTypeUtil.getType(tempFile);
|
||||||
String prefix = KitFileUtil.getPrefix(tempFile);
|
String prefix = KitFileUtil.getPrefix(tempFile);
|
||||||
String suffix = KitFileUtil.getSuffix(tempFile);
|
String suffix = KitFileUtil.getSuffix(tempFile);
|
||||||
String fileCode = IdUtil.fastSimpleUUID();
|
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;
|
String objectName = KitDateUtil.getNowDateStr() + "/" + fileName;
|
||||||
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
log.info("上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||||
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
String fileUrl = ossMinioConfig.getEndpoint() + "/" + ossMinioConfig.getBucketName() + "/" + objectName;
|
||||||
@@ -171,8 +182,8 @@ public class MinioRepository {
|
|||||||
systemOssStorageTb.setFileCode(fileCode);
|
systemOssStorageTb.setFileCode(fileCode);
|
||||||
systemOssStorageTb.setObjectName(objectName);
|
systemOssStorageTb.setObjectName(objectName);
|
||||||
try (InputStream fileInputStream = KitFileUtil.getInputStream(tempFile)) {
|
try (InputStream fileInputStream = KitFileUtil.getInputStream(tempFile)) {
|
||||||
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName)
|
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName).stream(fileInputStream, fileSize, -1)
|
||||||
.stream(fileInputStream, fileSize, -1).contentType(contentType).build();
|
.contentType(contentType).build();
|
||||||
minioClient.putObject(objectArgs);
|
minioClient.putObject(objectArgs);
|
||||||
log.info("文件上传成功,并删除临时文件,文件名:{}", originalFilename);
|
log.info("文件上传成功,并删除临时文件,文件名:{}", originalFilename);
|
||||||
return systemOssStorageTb;
|
return systemOssStorageTb;
|
||||||
@@ -206,9 +217,8 @@ public class MinioRepository {
|
|||||||
String objectName = KitDateUtil.getNowDateTimeStr() + "/" + fileName;
|
String objectName = KitDateUtil.getNowDateTimeStr() + "/" + fileName;
|
||||||
log.info("准备上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
log.info("准备上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
|
||||||
try (InputStream fileInputStream = file.getInputStream()) {
|
try (InputStream fileInputStream = file.getInputStream()) {
|
||||||
PutObjectArgs objectArgs =
|
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
||||||
PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName)
|
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
||||||
.stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
|
|
||||||
// 使用重试机制进行上传
|
// 使用重试机制进行上传
|
||||||
uploadWithRetry(objectArgs, 3);
|
uploadWithRetry(objectArgs, 3);
|
||||||
log.info("文件上传成功,objectName: {}", objectName);
|
log.info("文件上传成功,objectName: {}", objectName);
|
||||||
@@ -256,11 +266,10 @@ public class MinioRepository {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
GetPresignedObjectUrlArgs presignedUrlArgs =
|
GetPresignedObjectUrlArgs presignedUrlArgs = GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
||||||
GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName())
|
.object(fullFileName).method(Method.GET)
|
||||||
.object(fullFileName).method(Method.GET)
|
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
||||||
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
|
.expiry(3600 * 24 * 7).build();
|
||||||
.expiry(3600 * 24 * 7).build();
|
|
||||||
String url = minioClient.getPresignedObjectUrl(presignedUrlArgs);
|
String url = minioClient.getPresignedObjectUrl(presignedUrlArgs);
|
||||||
log.info("生成预签名 URL 成功,fileName: {}, url: {}", fullFileName, url);
|
log.info("生成预签名 URL 成功,fileName: {}, url: {}", fullFileName, url);
|
||||||
return url;
|
return url;
|
||||||
@@ -277,10 +286,10 @@ public class MinioRepository {
|
|||||||
* @param res HTTP 响应
|
* @param res HTTP 响应
|
||||||
*/
|
*/
|
||||||
public void download(String fileName, HttpServletResponse res) {
|
public void download(String fileName, HttpServletResponse res) {
|
||||||
GetObjectArgs objectArgs =
|
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
try (
|
||||||
try (GetObjectResponse response = minioClient.getObject(objectArgs);
|
GetObjectResponse response = minioClient.getObject(objectArgs); FastByteArrayOutputStream os = new FastByteArrayOutputStream()
|
||||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream()) {
|
) {
|
||||||
byte[] buf = new byte[1024];
|
byte[] buf = new byte[1024];
|
||||||
int len;
|
int len;
|
||||||
while ((len = response.read(buf)) != -1) {
|
while ((len = response.read(buf)) != -1) {
|
||||||
@@ -306,8 +315,7 @@ public class MinioRepository {
|
|||||||
* @param res HTTP 响应
|
* @param res HTTP 响应
|
||||||
*/
|
*/
|
||||||
public void downloadOptimizedVersion(String fileName, HttpServletResponse res) {
|
public void downloadOptimizedVersion(String fileName, HttpServletResponse res) {
|
||||||
GetObjectArgs objectArgs =
|
GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
||||||
GetObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build();
|
|
||||||
try (GetObjectResponse response = minioClient.getObject(objectArgs)) {
|
try (GetObjectResponse response = minioClient.getObject(objectArgs)) {
|
||||||
// 增大缓冲区
|
// 增大缓冲区
|
||||||
byte[] buf = new byte[1024 * 4];
|
byte[] buf = new byte[1024 * 4];
|
||||||
@@ -338,8 +346,7 @@ public class MinioRepository {
|
|||||||
*/
|
*/
|
||||||
public List<Item> queryAllObjects() {
|
public List<Item> queryAllObjects() {
|
||||||
try {
|
try {
|
||||||
Iterable<Result<Item>> results = minioClient.listObjects(
|
Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
||||||
ListObjectsArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).build());
|
|
||||||
List<Item> items = new ArrayList<>();
|
List<Item> items = new ArrayList<>();
|
||||||
for (Result<Item> result : results) {
|
for (Result<Item> result : results) {
|
||||||
items.add(result.get());
|
items.add(result.get());
|
||||||
@@ -359,9 +366,7 @@ public class MinioRepository {
|
|||||||
*/
|
*/
|
||||||
public boolean removeBucketFile(String fileName) {
|
public boolean removeBucketFile(String fileName) {
|
||||||
try {
|
try {
|
||||||
minioClient.removeObject(
|
minioClient.removeObject(RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName).build());
|
||||||
RemoveObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fileName)
|
|
||||||
.build());
|
|
||||||
log.info("删除文件成功,fileName: {}", fileName);
|
log.info("删除文件成功,fileName: {}", fileName);
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -203,12 +203,12 @@ app:
|
|||||||
queue-capacity: 50
|
queue-capacity: 50
|
||||||
# oss
|
# oss
|
||||||
oss:
|
oss:
|
||||||
max-size: 100
|
max-size: 10
|
||||||
minio:
|
minio:
|
||||||
endpoint: http://192.168.100.128:9000
|
endpoint: https://oss.odboy.cn
|
||||||
bucketName: cutejava
|
bucketName: cutejava
|
||||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||||
captcha:
|
captcha:
|
||||||
expireTime: 300
|
expireTime: 300
|
||||||
# 序列化白名单
|
# 序列化白名单
|
||||||
|
|||||||
@@ -202,12 +202,12 @@ app:
|
|||||||
queue-capacity: 50
|
queue-capacity: 50
|
||||||
# oss
|
# oss
|
||||||
oss:
|
oss:
|
||||||
max-size: 100
|
max-size: 10
|
||||||
minio:
|
minio:
|
||||||
endpoint: http://192.168.100.128:9000
|
endpoint: https://oss.odboy.cn
|
||||||
bucketName: cutejava
|
bucketName: cutejava
|
||||||
accessKey: 8o5oVzqvKby5TzaGcfmx
|
accessKey: 74rgxZtiYtOzsY9U8W9F
|
||||||
secretKey: 8BiK5UbmvXGJNVQ98CGiohHzT1N1FMRZqHRdJllj
|
secretKey: 7d1BiBlfFQDBHKfwAWjF18TLUMjbd9VbSgnncsTw
|
||||||
captcha:
|
captcha:
|
||||||
expireTime: 300
|
expireTime: 300
|
||||||
# 序列化白名单
|
# 序列化白名单
|
||||||
|
|||||||
Reference in New Issue
Block a user