From f4622f09bad4f716b2af2b69347b614ae0ba8027 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com>
Date: Tue, 29 Oct 2024 14:37:41 +0800
Subject: [PATCH] 'commit'
---
dsRes/pom.xml | 1 -
.../Res/Controller/ResourceController.java | 44 +++++++++++++--
.../com/dsideal/resource/Util/MinioUtils.java | 56 ++++++++++++++++---
3 files changed, 87 insertions(+), 14 deletions(-)
diff --git a/dsRes/pom.xml b/dsRes/pom.xml
index 242bef82..e7469166 100644
--- a/dsRes/pom.xml
+++ b/dsRes/pom.xml
@@ -179,7 +179,6 @@
log4j-api
2.20.0
-
com.fasterxml.jackson.core
jackson-databind
diff --git a/dsRes/src/main/java/com/dsideal/resource/Res/Controller/ResourceController.java b/dsRes/src/main/java/com/dsideal/resource/Res/Controller/ResourceController.java
index f4868d88..cf574399 100644
--- a/dsRes/src/main/java/com/dsideal/resource/Res/Controller/ResourceController.java
+++ b/dsRes/src/main/java/com/dsideal/resource/Res/Controller/ResourceController.java
@@ -1,44 +1,78 @@
package com.dsideal.resource.Res.Controller;
+import com.dsideal.resource.Interceptor.EmptyInterface;
+import com.dsideal.resource.Interceptor.JwtCheckInterface;
+import com.dsideal.resource.Util.MinioUtils;
+import com.dsideal.resource.Util.RetKit;
+import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
+import com.jfinal.ext.interceptor.GET;
+import io.minio.errors.*;
+
+import java.io.IOException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
public class ResourceController extends Controller {
+ /**
+ * 获取Minio的上传签名
+ *
+ * @param extension 上传的扩展名
+ */
+ @Before(GET.class)
+ @JwtCheckInterface({})
+ @EmptyInterface({"objectName"})
+ public void getSignature(String extension) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ if (!extension.equals(extension.toLowerCase())) {
+ renderJson(RetKit.renderFail("扩展名必须为小写"));
+ return;
+ }
+ //生成一个guid+扩展名的key
+ String objectName = java.util.UUID.randomUUID() + "." + extension;
+ String signature = MinioUtils.getSignature(objectName);
+ renderJson(RetKit.renderSuccess(signature));
+ }
+
+
/**
* 新增资源
*/
- public void addResource(){
+ public void addResource() {
}
/**
* 删除资源
+ *
* @param resource_id_int 资源id
*/
- public void deleteResource(int resource_id_int){
+ public void deleteResource(int resource_id_int) {
}
/**
* 修改资源
+ *
* @param resource_id_int 资源id
*/
- public void updateResource(int resource_id_int){
+ public void updateResource(int resource_id_int) {
}
/**
* 查询资源
+ *
* @param resource_id_int 资源id
*/
- public void queryResource(int resource_id_int){
+ public void queryResource(int resource_id_int) {
}
/**
* 查询所有资源
*/
- public void queryAllResource(){
+ public void queryAllResource() {
}
}
diff --git a/dsRes/src/main/java/com/dsideal/resource/Util/MinioUtils.java b/dsRes/src/main/java/com/dsideal/resource/Util/MinioUtils.java
index b0c4d230..fe8cdbbc 100644
--- a/dsRes/src/main/java/com/dsideal/resource/Util/MinioUtils.java
+++ b/dsRes/src/main/java/com/dsideal/resource/Util/MinioUtils.java
@@ -4,10 +4,12 @@ import cn.hutool.core.io.FileUtil;
import com.dsideal.resource.Plugin.YamlProp;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.Prop;
+import io.minio.GetPresignedObjectUrlArgs;
import io.minio.MinioClient;
import io.minio.SetBucketPolicyArgs;
import io.minio.UploadObjectArgs;
import io.minio.errors.*;
+import io.minio.http.Method;
import java.io.IOException;
import java.security.InvalidKeyException;
@@ -16,26 +18,64 @@ import java.security.NoSuchAlgorithmException;
import static com.dsideal.resource.ResApplication.getEnvPrefix;
public class MinioUtils {
+ public static Prop PropKit;
+ public static String minio_endpoint;
+ public static String minio_accesskey;
+ public static String minio_secretkey;
+ public static String bucketName;
+
+ static {
+ //加载配置文件
+ String configFile = "application_{?}.yaml".replace("{?}", getEnvPrefix());
+ PropKit = new YamlProp(configFile);
+ minio_endpoint = PropKit.get("minio.endpoint");
+ minio_accesskey = PropKit.get("minio.accessKey");
+ minio_secretkey = PropKit.get("minio.secretKey");
+ bucketName = PropKit.get("minio.bucketName");
+ }
+
/**
* 功能:获取Minio操作实例
*
* @return
*/
- public static Prop PropKit;
+
public static MinioClient getMinioClient() {
- //加载配置文件
- String configFile = "application_{?}.yaml".replace("{?}", getEnvPrefix());
- PropKit = new YamlProp(configFile);
- String minio_endpoint = PropKit.get("minio.endpoint");
- String minio_accesskey = PropKit.get("minio.accessKey");
- String minio_secretkey = PropKit.get("minio.secretKey");
- String bucketName = PropKit.get("minio.bucketName");
return MinioClient.builder()
.endpoint(minio_endpoint)
.credentials(minio_accesskey, minio_secretkey)
.build();
}
+ /**
+ * 功能:获取文件上传签名
+ * @param objectName
+ * @return
+ * @throws ServerException
+ * @throws InsufficientDataException
+ * @throws ErrorResponseException
+ * @throws IOException
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidKeyException
+ * @throws InvalidResponseException
+ * @throws XmlParserException
+ * @throws InternalException
+ */
+ public static String getSignature(String objectName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ int expiresDuration = 600; // 过期时间为10*60秒
+ // 生成带有签名的URL
+ String url = getMinioClient().getPresignedObjectUrl(
+ GetPresignedObjectUrlArgs.builder()
+ .method(Method.GET)
+ .bucket(bucketName)
+ .object(objectName)
+ .expiry(expiresDuration)
+ .build());
+
+ return url;
+ }
+
+
/**
* 功能:上传文件
*