tsurumure 8 сар өмнө
parent
commit
6decee6453

+ 5 - 12
db/sys_upload.sql

@@ -5,25 +5,18 @@ Date: 2023/05/23 17:09:22
 */
 
 DROP TABLE IF EXISTS `sys_upload`;
-
 CREATE TABLE `sys_upload` (
     PRIMARY KEY (`id`),
     `id` BIGINT(10) AUTO_INCREMENT COMMENT 'ID',
     `category_id` BIGINT(10) COMMENT '分类ID',
-    `user_id` BIGINT(10) COMMENT '上传者',
-    `name` VARCHAR(255) NOT NULL COMMENT '文件名称',
+    `user_id` BIGINT(10) COMMENT '上传用户ID',
+    `file_name` VARCHAR(255) NOT NULL COMMENT '文件名称',
+    `file_type` VARCHAR(500) COMMENT '文件类型',
+    `full_path` VARCHAR(1000) COMMENT '文件完整路径',
     `object_key` VARCHAR(500) COMMENT 'ObjectKey',
-    `file_local_path` VARCHAR(255) COMMENT '本地路径',
-    `file_remote_path` VARCHAR(255) COMMENT '远程路径',
-    `file_remote_path_thumb` VARCHAR(255) COMMENT '远程路径 (缩略图)',
-    `file_key` VARCHAR(255) COMMENT '腾讯云COS路径',
     `size` INT COMMENT '文件大小',
     `md5` VARCHAR(255) COMMENT '文件MD5',
-    `chunk_upload_id` VARCHAR(255) COMMENT '文件分片任务ID',
-    `chunk_count` INT COMMENT '文件分片数量',
-    `chunk_current_index` INT COMMENT '当前文件分片索引',
-    `notes` VARCHAR(255) COMMENT '备注',
     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
-) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='系统文件表';
+) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='系统上传文件表';
 

+ 13 - 9
src/main/java/com/backendsys/modules/upload/controller/UploadController.java → src/main/java/com/backendsys/modules/upload/controller/SysUploadController.java

@@ -3,6 +3,7 @@ package com.backendsys.modules.upload.controller;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.utils.Result;
 import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
+import com.backendsys.modules.upload.service.SysUploadService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -15,23 +16,26 @@ import java.io.IOException;
 
 @Validated
 @RestController
-public class UploadController {
+public class SysUploadController {
 
     @Autowired
     private TencentCosService tencentCosService;
+    @Autowired
+    private SysUploadService sysUploadService;
 
     /**
-     * 简单上传文件
+     * 简单上传文件 (小文件,20MB以内)
+     * - 5MB = 5242880
+     * - 20MB = 20971520
+     * - 100MB = 104857600
+     * - 1GB = 1073741824
      */
     @PreAuthorize("@ss.hasPermi(1.1)")
     @PostMapping("/api/v2/upload/simpleUpload")
-    public Result simpleUpload(@RequestParam("file") MultipartFile file) throws IOException {
-
-        // 判断文件是否超过大小 (5MB = 5242880) (1GB = 1073741824)
-        long MAX_SIZE = 5242880;
-        if (file.getSize() > MAX_SIZE) throw new CustException("上传文件不能大于 " + MAX_SIZE/1024/1024 + " MB,请使用大文件上传功能");
-
-        return Result.success().put("data", tencentCosService.putObject(file, null));
+    public Result uploadSmall(@RequestParam("file") MultipartFile file) {
+//    public Result uploadSmall(@RequestParam("file") MultipartFile file) throws IOException {
+        return Result.success().put("data", sysUploadService.uploadSmall(file));
+//        return Result.success().put("data", tencentCosService.putObject(file, null));
     }
 
 }

+ 9 - 0
src/main/java/com/backendsys/modules/upload/dao/SysUploadDao.java

@@ -0,0 +1,9 @@
+package com.backendsys.modules.upload.dao;
+
+import com.backendsys.modules.upload.entity.SysUpload;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysUploadDao extends BaseMapper<SysUpload> {
+}

+ 23 - 0
src/main/java/com/backendsys/modules/upload/entity/SysUpload.java

@@ -0,0 +1,23 @@
+package com.backendsys.modules.upload.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("sys_upload")
+public class SysUpload {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    private Long category_id;
+    private Long user_id;
+    private String file_name;
+    private String file_type;
+    private String full_path;
+    private String object_key;
+    private Long size;
+    private String md5;
+    private String create_time;
+    private String update_time;
+}

+ 11 - 0
src/main/java/com/backendsys/modules/upload/service/SysUploadService.java

@@ -0,0 +1,11 @@
+package com.backendsys.modules.upload.service;
+
+import com.backendsys.modules.upload.entity.SysUpload;
+import org.springframework.web.multipart.MultipartFile;
+
+public interface SysUploadService {
+
+    // [上传] 小文件
+    SysUpload uploadSmall(MultipartFile file);
+
+}

+ 64 - 0
src/main/java/com/backendsys/modules/upload/service/impl/SysUploadServiceImpl.java

@@ -0,0 +1,64 @@
+package com.backendsys.modules.upload.service.impl;
+
+import com.backendsys.exception.CustException;
+import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
+import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
+import com.backendsys.modules.upload.dao.SysUploadDao;
+import com.backendsys.modules.upload.entity.SysUpload;
+import com.backendsys.modules.upload.service.SysUploadService;
+import com.qcloud.cos.model.UploadResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+@Service
+public class SysUploadServiceImpl implements SysUploadService {
+
+    @Autowired
+    private HttpRequestUtil httpRequestUtil;
+    @Autowired
+    private TencentCosService tencentCosService;
+    @Autowired
+    private SysUploadDao sysUploadDao;
+
+    /**
+     * [上传] 小文件
+     * - 5MB = 5242880
+     * - 20MB = 20971520
+     * - 100MB = 104857600
+     * - 1GB = 1073741824
+     */
+    @Override
+    public SysUpload uploadSmall(MultipartFile file) {
+        try {
+
+            // 判断文件是否超过大小
+            long MAX_SIZE = 5242880;
+            if (file.getSize() > MAX_SIZE) {
+                throw new CustException("上传文件不能大于 " + MAX_SIZE / 1024 / 1024 + " MB,请使用大文件上传功能");
+            }
+
+            UploadResult uploadResult = tencentCosService.putObject(file, null);
+
+            // 新增上传文件记录
+            SysUpload sysUpload = new SysUpload();
+//            sysUpload.setCategory_id(null);   // 临时分类?
+            sysUpload.setUser_id(httpRequestUtil.getUserId());
+            // 封装 getFileName
+            // 封装 getFileType
+            // 封装 getFullPath
+//            sysUpload.setFile_name(uploadResult.getKey().replace("/temp", ""));
+            sysUpload.setObject_key(uploadResult.getKey());
+            sysUpload.setSize(file.getSize());
+            sysUpload.setMd5(uploadResult.getETag());
+
+            return sysUpload;
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}