Selaa lähdekoodia

修改上传接口

20446 6 kuukautta sitten
vanhempi
commit
93740a36a9

+ 7 - 0
pom.xml

@@ -36,6 +36,7 @@
         <jakarta.version>6.0.0</jakarta.version>
         <springdoc.version>2.6.0</springdoc.version>
         <lombok.version>1.18.34</lombok.version>
+        <thumbnailator.vaersion>0.4.20</thumbnailator.vaersion>
     </properties>
 
     <!-- 依赖声明 -->
@@ -197,6 +198,12 @@
                 <artifactId>lombok</artifactId>
                 <version>${lombok.version}</version>
             </dependency>
+            <!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
+            <dependency>
+                <groupId>net.coobird</groupId>
+                <artifactId>thumbnailator</artifactId>
+                <version>${thumbnailator.vaersion}</version>
+            </dependency>
 
         </dependencies>
     </dependencyManagement>

+ 5 - 0
ruoyi-admin/pom.xml

@@ -54,6 +54,11 @@
             <artifactId>ruoyi-generator</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 4 - 16
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

@@ -1,28 +1,16 @@
 package com.ruoyi.web.controller.common;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
-import java.util.Objects;
 
-import com.ruoyi.common.utils.FTPUtil;
-import com.ruoyi.common.utils.uuid.UUID;
-import com.ruoyi.system.service.ICommonService;
+import com.ruoyi.framework.recovery.service.ICommonService;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.constant.Constants;
@@ -80,9 +68,9 @@ public class CommonController {
      * 通用上传请求(单个)
      */
     @PostMapping("/upload")
-    public AjaxResult uploadFile(MultipartFile file) throws Exception {
+    public AjaxResult uploadFile(@RequestParam(name = "file") MultipartFile file, @RequestParam(name = "type") String type) throws Exception {
         try {
-            return commonService.uploadFile(file);
+            return commonService.uploadFile(file, type);
         } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }

+ 2 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/ICommonService.java → ruoyi-framework/src/main/java/com/ruoyi/framework/recovery/service/ICommonService.java

@@ -1,4 +1,4 @@
-package com.ruoyi.system.service;
+package com.ruoyi.framework.recovery.service;
 
 import com.ruoyi.common.core.domain.AjaxResult;
 import org.springframework.web.multipart.MultipartFile;
@@ -9,5 +9,5 @@ public interface ICommonService {
      *
      * @param file 文件内容
      */
-    AjaxResult uploadFile(MultipartFile file) throws Exception;
+    AjaxResult uploadFile(MultipartFile file, String type) throws Exception;
 }

+ 42 - 6
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CommonServiceImpl.java → ruoyi-framework/src/main/java/com/ruoyi/framework/recovery/service/impl/CommonServiceImpl.java

@@ -1,16 +1,20 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.framework.recovery.service.impl;
 
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.FTPUtil;
 import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.uuid.UUID;
-import com.ruoyi.system.service.ICommonService;
+import com.ruoyi.framework.recovery.mapper.RecCommodityMapper;
+import com.ruoyi.framework.recovery.service.ICommonService;
 import lombok.extern.slf4j.Slf4j;
+import net.coobird.thumbnailator.Thumbnails;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
@@ -25,18 +29,28 @@ public class CommonServiceImpl implements ICommonService {
     @Autowired
     private FTPUtil ftpUtil;
 
+    @Autowired
+    private RecCommodityMapper commodityMapper;
 
 
     /**
      * 时间格式化
      */
-    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+    private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
 
     @Override
-    public AjaxResult uploadFile(MultipartFile file) throws Exception {
-// 文件目录,以当天时间为目录
-        String filePath = "recovery/" + simpleDateFormat.format(new Date()) + "/";
+    public AjaxResult uploadFile(MultipartFile file, String type) throws Exception {
+        // 高清文件目录,以当天时间为目录
+        String filePath = "recovery-hd/" + simpleDateFormat.format(new Date()) + "/";
+        // 缩略图文件目录
+        String fileThu = "";
         String suffix = Objects.requireNonNull(file.getOriginalFilename()).substring(file.getOriginalFilename().lastIndexOf("."));
+        boolean isImg = false;
+        if (suffix.equalsIgnoreCase("jpg") || suffix.equalsIgnoreCase("jpeg")
+                || suffix.equalsIgnoreCase("png") || suffix.equalsIgnoreCase("gif")) {
+            isImg = true;
+            fileThu = "recovery-thum" + simpleDateFormat.format(new Date()) + "/";
+        }
         // 生成新的文件名
         String newFileName = UUID.randomUUID() + suffix;
         File toFile = multipartFileToFile(file);
@@ -46,6 +60,15 @@ public class CommonServiceImpl implements ICommonService {
         } else {
             System.out.println("上传至ftp服务器失败!");
         }
+        // 如果是图片,就上传缩略图
+        if (isImg) {
+            BufferedImage image = Thumbnails.of(file.getInputStream()).scale(0.8f).outputFormat(suffix).outputQuality(0.5).asBufferedImage();
+            File newFile = new File(fileThu + newFileName);
+            ImageIO.write(image, suffix.substring(1), newFile);
+            ftpUtil.uploadToFtp(fileThu, newFileName, newFile);
+        }
+        updateDb(filePath + newFileName, fileThu + newFileName, type);
+
         // 上传并返回新文件名称
         String fileName = FileUploadUtils.upload(filePath, file);
         AjaxResult ajax = AjaxResult.success();
@@ -87,4 +110,17 @@ public class CommonServiceImpl implements ICommonService {
             e.printStackTrace();
         }
     }
+
+    /**
+     * 更新数据库内容
+     *
+     * @param hdUrl  高清图地址,若不是图片就文件地址
+     * @param thuUrl 缩略图地址
+     * @param type   更新到哪个表中
+     */
+    private void updateDb(String hdUrl, String thuUrl, String type) {
+        switch (type) {
+         case "commodity":
+        }
+    }
 }

+ 4 - 0
ruoyi-system/pom.xml

@@ -22,6 +22,10 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+        </dependency>
 
     </dependencies>