From 6d7daf7b789b65a5f2837208b6b0cb8fa52a3367 Mon Sep 17 00:00:00 2001
From: zqy <2522236926@qq.com>
Date: 星期一, 05 一月 2026 09:41:21 +0800
Subject: [PATCH] 修改接口为json
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 186 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 181 insertions(+), 5 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
index 8e2e52c..1e6e1d1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -5,13 +5,18 @@
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.HashMap;
+import java.nio.file.StandardCopyOption;
+import java.util.*;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import javax.imageio.IIOImage;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.stream.MemoryCacheImageOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.websocket.server.PathParam;
@@ -19,7 +24,9 @@
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.utils.RenamedMultipartFile;
import com.ruoyi.common.utils.uuid.UUID;
+import com.ruoyi.domain.MediaCompressRequest;
import com.ruoyi.service.DownLoadFileService;
+import com.ruoyi.service.impl.VideoProcessService;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,10 +42,27 @@
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;
+import springfox.bean.validators.plugins.schema.NotNullAnnotationPlugin;
+
+import javax.imageio.ImageIO;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import java.util.Base64;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
/**
* 閫氱敤璇锋眰澶勭悊
- *
+ *
* @author ruoyi
*/
@RestController
@@ -52,12 +76,55 @@
@Autowired
private DownLoadFileService downLoadFileService;
+
+ @Autowired
+ private VideoProcessService videoProcessService;
+
private static final String FILE_DELIMETER = ",";
private static final Pattern CHINESE_PATTERN = Pattern.compile("[\u4e00-\u9fa5]");
+ // 缂╃暐鍥鹃厤缃�
+ @Value("${thumbnail.default-width:300}")
+ private int defaultThumbnailWidth;
-// @GetMapping("/downloadFile")
+ @Value("${thumbnail.default-height:200}")
+ private int defaultThumbnailHeight;
+
+ @Value("${thumbnail.quality:0.8}")
+ private double thumbnailQuality;
+
+ @Value("${thumbnail.cache-dir:./cache/thumbnails}")
+ private String thumbnailCacheDir;
+
+
+ @Value("${thumbnail.max-width:1920}")
+ private int maxThumbnailWidth;
+
+ @Value("${thumbnail.max-height:1080}")
+ private int maxThumbnailHeight;
+
+ @Value("${thumbnail.format:jpg}")
+ private String thumbnailFormat;
+
+ @Value("${thumbnail.keep-aspect-ratio:true}")
+ private boolean keepAspectRatio;
+
+ // 鏀寔鐨勫浘鐗囨牸寮�
+ private static final String[] IMAGE_FORMATS = {"jpg", "jpeg", "png", "gif", "bmp", "webp"};
+
+ // 鏀寔鐨勮棰戞牸寮�
+ private static final String[] VIDEO_FORMATS = {"mp4", "avi", "mov", "wmv", "flv", "mkv", "webm"};
+ @Autowired
+ private NotNullAnnotationPlugin notNullPlugin;
+
+ @Anonymous
+ @GetMapping("/generateThumbnail")
+ public AjaxResult generateThumbnail(@PathParam(value = "url") String url) throws Exception {
+
+ return AjaxResult.success( );
+ }
+ // @GetMapping("/downloadFile")
// public void fileDownload(@PathParam("path") String path, HttpServletResponse response)
// {
// path=path.substring(8);
@@ -444,4 +511,113 @@
}
}
-}
\ No newline at end of file
+
+
+
+ /**
+ * 鍘嬬缉鍥剧墖鎴栨彁鍙栬棰戝皝闈㈠苟杩斿洖Base64
+ * @param mediaCompressRequest
+ * 鍖呮嫭
+ * file 鍥剧墖鎴栬棰戞枃浠�
+ * width 鐩爣瀹藉害锛岄粯璁�100
+ * height 鐩爣楂樺害锛岄粯璁�100
+ * quality 鍥剧墖璐ㄩ噺 0.1-1.0锛岄粯璁�0.8
+ * @return Map鍖呭惈鍘嬬缉缁撴灉鍜孊ase64
+ */
+ @Anonymous
+ @PostMapping(value = "/images/zip")
+ public Map<String, Object> compressMediaToBase64(@RequestBody MediaCompressRequest mediaCompressRequest) {
+ Map<String, Object> result = new HashMap<>();
+
+ if (mediaCompressRequest == null && mediaCompressRequest.getFilePath() == null){
+ result.put("success", false);
+ result.put("message", "鏂囦欢涓嶈兘涓虹┖");
+ return result;
+ }
+
+ String filePath = mediaCompressRequest.getFilePath();
+ int width = mediaCompressRequest.getWidth();
+ int height = mediaCompressRequest.getHeight();
+ float quality = mediaCompressRequest.getQuality();
+
+ System.out.println("--------------"+mediaCompressRequest);
+
+ File trueFile;
+
+ try {
+ String fileUel = RuoYiConfig.getProfile() + filePath.replace("/profile","").replace("profile","");
+ trueFile = new File(fileUel);
+
+
+ String fileName = trueFile.getName();
+
+ System.out.println("-----------"+fileName);
+
+ // 鑾峰彇鏂囦欢鎵╁睍鍚�
+ String extension = getFileExtension(fileName).toLowerCase();
+ System.out.println("-----------"+extension);
+
+ // 鍒ゆ柇鏂囦欢绫诲瀷
+ if (isImageFile(extension)) {
+ // 澶勭悊鍥剧墖鏂囦欢
+ return videoProcessService.processImage(trueFile, width, height, quality, extension);
+ } else if (isVideoFile(extension)) {
+ // 澶勭悊瑙嗛鏂囦欢
+ return videoProcessService.processVideo(trueFile,width,height,quality,extension);
+ } else {
+ result.put("success", false);
+ result.put("message", "涓嶆敮鎸佺殑鏂囦欢鏍煎紡锛�" + extension);
+ return result;
+ }
+
+ } catch (Exception e) {
+ log.error("鏂囦欢澶勭悊澶辫触", e);
+ result.put("success", false);
+ result.put("message", "澶勭悊澶辫触: " + e.getMessage());
+ return result;
+ }
+ }
+
+
+ /**
+ * 鍒ゆ柇鏄惁鏄浘鐗囨枃浠�
+ */
+ private boolean isImageFile(String extension) {
+ for (String format : IMAGE_FORMATS) {
+ if (format.equalsIgnoreCase(extension)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 鍒ゆ柇鏄惁鏄棰戞枃浠�
+ */
+ private boolean isVideoFile(String extension) {
+ for (String format : VIDEO_FORMATS) {
+ if (format.equalsIgnoreCase(extension)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 鑾峰彇鏂囦欢鎵╁睍鍚�
+ */
+ private String getFileExtension(String fileName) {
+ if (StringUtils.isEmpty(fileName)) {
+ return "";
+ }
+
+ int lastDot = fileName.lastIndexOf('.');
+ if (lastDot > 0 && lastDot < fileName.length() - 1) {
+ return fileName.substring(lastDot + 1).toLowerCase();
+ }
+ return "";
+ }
+
+
+
+}
--
Gitblit v1.9.1