From c126e47823a657b44a1dc7cf4d8889c16ad8ccd3 Mon Sep 17 00:00:00 2001 From: none Date: Thu, 2 Mar 2023 15:03:19 +0800 Subject: [PATCH] =?UTF-8?q?minio-token=E8=BF=94=E5=9B=9Eresource=5Ftype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xyz/playedu/api/constant/BackendConstant.java | 14 +++++++++++++- .../backend/ResourceCategoryController.java | 6 +++--- .../api/controller/backend/UploadController.java | 9 ++++----- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/xyz/playedu/api/constant/BackendConstant.java b/src/main/java/xyz/playedu/api/constant/BackendConstant.java index 2fc8990..e521d10 100644 --- a/src/main/java/xyz/playedu/api/constant/BackendConstant.java +++ b/src/main/java/xyz/playedu/api/constant/BackendConstant.java @@ -7,7 +7,7 @@ public class BackendConstant { public final static String[] UN_AUTH_URI_WHITELIST = {"/backend/v1/system/image-captcha", "/backend/v1/auth/login",}; - public final static String[] RESOURCE_EXT_WHITELIST = {"IMAGE", "PDF", "VIDEO", "WORD", "PPT"}; + public final static String[] RESOURCE_TYPE_WHITELIST = {"IMAGE", "PDF", "VIDEO", "WORD", "PPT"}; public final static HashMap RESOURCE_EXT_2_CONTENT_TYPE = new HashMap<>() {{ put("png", "image/png"); put("jpg", "image/jpg"); @@ -20,6 +20,18 @@ public class BackendConstant { put("ppt", "application/vnd.ms-powerpoint"); put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"); }}; + public final static HashMap RESOURCE_EXT_2_TYPE = new HashMap<>() {{ + put("png", "IMAGE"); + put("jpg", "IMAGE"); + put("jpeg", "IMAGE"); + put("gif", "IMAGE"); + put("pdf", "PDF"); + put("mp4", "VIDEO"); + put("doc", "WORD"); + put("docx", "WORD"); + put("ppt", "PPT"); + put("pptx", "PPT"); + }}; public final static String[] RESOURCE_DISK_WHITELIST = {"MINIO"}; diff --git a/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java b/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java index 47c1341..5e5c131 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java @@ -48,14 +48,14 @@ public class ResourceCategoryController { @GetMapping("/create") public JsonResponse create() { HashMap data = new HashMap<>(); - data.put("types", BackendConstant.RESOURCE_EXT_WHITELIST); + data.put("types", BackendConstant.RESOURCE_TYPE_WHITELIST); return JsonResponse.data(data); } @BackendPermissionMiddleware(slug = BPermissionConstant.RESOURCE_CATEGORY) @PostMapping("/create") public JsonResponse store(@RequestBody @Validated ResourceCategoryRequest req) { - if (!Arrays.asList(BackendConstant.RESOURCE_EXT_WHITELIST).contains(req.getType())) { + if (!Arrays.asList(BackendConstant.RESOURCE_TYPE_WHITELIST).contains(req.getType())) { return JsonResponse.error("资源类型不支持"); } resourceCategoryService.create(req.getType(), req.getSort(), req.getName()); @@ -72,7 +72,7 @@ public class ResourceCategoryController { @BackendPermissionMiddleware(slug = BPermissionConstant.RESOURCE_CATEGORY) @PutMapping("/{id}") public JsonResponse update(@PathVariable(name = "id") Integer id, @RequestBody @Validated ResourceCategoryRequest req) throws NotFoundException { - if (!Arrays.asList(BackendConstant.RESOURCE_EXT_WHITELIST).contains(req.getType())) { + if (!Arrays.asList(BackendConstant.RESOURCE_TYPE_WHITELIST).contains(req.getType())) { return JsonResponse.error("资源类型不支持"); } ResourceCategory category = resourceCategoryService.findOrFail(id); diff --git a/src/main/java/xyz/playedu/api/controller/backend/UploadController.java b/src/main/java/xyz/playedu/api/controller/backend/UploadController.java index d740436..90a7a46 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UploadController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UploadController.java @@ -6,10 +6,7 @@ import io.minio.PutObjectArgs; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import xyz.playedu.api.config.MinioConfig; import xyz.playedu.api.constant.BackendConstant; @@ -90,7 +87,7 @@ public class UploadController { } } - @PostMapping("/minio-token") + @GetMapping("/minio-token") public JsonResponse minioToken(@RequestParam HashMap params) { String extension = MapUtils.getString(params, "extension"); if (extension == null || extension.isEmpty()) { @@ -100,12 +97,14 @@ public class UploadController { if (contentType == null) { return JsonResponse.error("该格式不支持上传"); } + String resourceType = BackendConstant.RESOURCE_EXT_2_TYPE.get(extension.toLowerCase()); try { PostPolicy postPolicy = new PostPolicy(minioConfig.getBucket(), ZonedDateTime.now().plusDays(1)); postPolicy.addStartsWithCondition("Content-Type", contentType); postPolicy.addEqualsCondition("key", HelperUtil.randomString(32)); Map data = minioClient.getPresignedPostFormData(postPolicy); + data.put("resource_type", resourceType); return JsonResponse.data(data); } catch (Exception e) { log.error(e.getMessage());