Kaynağa Gözat

增加上传文件接口

dsx 1 yıl önce
ebeveyn
işleme
1ea62840a6

+ 6 - 0
pom.xml

@@ -176,6 +176,12 @@
             <version>8.0.32</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-filestorage</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
+        </dependency>
+
     </dependencies>
 
     <dependencyManagement>

+ 7 - 0
src/main/java/com/fdkankan/renderer/controller/SceneController.java

@@ -8,7 +8,9 @@ import com.fdkankan.web.response.ResultData;
 import com.mybatisflex.core.query.QueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -61,4 +63,9 @@ public class SceneController {
         return ResultData.ok();
     }
 
+    @PostMapping("file/upload")
+    public ResultData uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("num") String num) throws IOException {
+        return ResultData.ok(sceneService.uploadFile(file, num));
+    }
+
 }

+ 6 - 0
src/main/java/com/fdkankan/renderer/service/ISceneService.java

@@ -5,6 +5,10 @@ import com.fdkankan.renderer.vo.SceneDetailVo;
 import com.fdkankan.web.response.ResultData;
 import com.mybatisflex.core.service.IService;
 import com.fdkankan.renderer.entity.Scene;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
 
 /**
  * 场景表 服务层。
@@ -20,4 +24,6 @@ public interface ISceneService extends IService<Scene> {
 
     SceneDetailVo getDetail(String num);
 
+    String uploadFile(MultipartFile file, String num) throws IOException;
+
 }

+ 25 - 3
src/main/java/com/fdkankan/renderer/service/impl/SceneServiceImpl.java

@@ -6,17 +6,23 @@ import com.alibaba.fastjson.JSON;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.RandomUtil;
+import com.fdkankan.filestorage.FileStorageTemplate;
+import com.fdkankan.filestorage.properties.AliyunOssProperties;
 import com.fdkankan.renderer.dto.SceneDto;
+import com.fdkankan.renderer.entity.Scene;
+import com.fdkankan.renderer.mapper.SceneMapper;
+import com.fdkankan.renderer.service.ISceneService;
 import com.fdkankan.renderer.vo.SceneDetailVo;
 import com.fdkankan.web.response.ResultData;
 import com.mybatisflex.core.query.QueryWrapper;
 import com.mybatisflex.spring.service.impl.ServiceImpl;
-import com.fdkankan.renderer.entity.Scene;
-import com.fdkankan.renderer.mapper.SceneMapper;
-import com.fdkankan.renderer.service.ISceneService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.Objects;
 
 /**
@@ -28,8 +34,14 @@ import java.util.Objects;
 @Service
 public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements ISceneService {
 
+    @Value("${filestorage.oss.dir}")
+    private String ossDir;
+
     @Value("${param-dir}")
     private String paramDir;
+    @Autowired
+    private FileStorageTemplate fileStorageTemplate;
+
 
     @Override
     public ResultData saveScene(SceneDto sceneDto) {
@@ -67,4 +79,14 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
         String paramStr = FileUtil.readUtf8String(scene.getParamPath());
         return SceneDetailVo.builder().num(scene.getNum()).title(scene.getTitle()).createTime(scene.getCreateTime()).param(JSON.parseObject(paramStr)).build();
     }
+
+    @Override
+    public String uploadFile(MultipartFile file, String num) throws IOException {
+
+        String originalFilename = file.getOriginalFilename();
+        String key = ossDir.concat(num).concat(File.separator).concat(originalFilename);
+        String url = fileStorageTemplate.uploadFileStream(key, file.getInputStream());
+
+        return url;
+    }
 }

+ 13 - 0
src/main/resources/application.yml

@@ -29,6 +29,19 @@ forest:
   ## 连接超时时间,单位为毫秒, 默认值为2000
   connect-timeout: 10000
 
+filestorage:
+  active: oss
+  oss:
+    active: oss
+    endpoint: http://oss-cn-shenzhen.aliyuncs.com
+    internal-endpoint: http://oss-cn-shenzhen.aliyuncs.com
+    access-key: LTAIUrvuHqj8pvry
+    access-key-secret: JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4
+    bucket: 4dkankan
+    bucket-custom-domain:
+      4dkankan: https://4dkk.4dage.com
+    dir: renderer/
+
 logging:
   path: /home/backend/4dkankan_v4