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; + } + + /** * 功能:上传文件 *