Browse Source

增加上传文件接口

dsx 1 year ago
parent
commit
5c6cea2511

+ 3 - 2
src/main/java/com/fdkankan/renderer/controller/SceneController.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.util.Map;
 
 /**
@@ -29,7 +30,7 @@ public class SceneController {
      * @return
      */
     @PostMapping("/save")
-    public ResultData save(@RequestBody SceneDto sceneDto){
+    public ResultData save(@RequestBody SceneDto sceneDto) throws UnsupportedEncodingException {
         return sceneService.saveScene(sceneDto);
     }
 
@@ -48,7 +49,7 @@ public class SceneController {
      * @return
      */
     @GetMapping("/{num}")
-    public ResultData detail(@PathVariable("num") String num){
+    public ResultData detail(@PathVariable("num") String num) throws IOException {
         return ResultData.ok(sceneService.getDetail(num));
     }
 

+ 3 - 2
src/main/java/com/fdkankan/renderer/service/ISceneService.java

@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 
 /**
  * 场景表 服务层。
@@ -18,11 +19,11 @@ import java.io.IOException;
  */
 public interface ISceneService extends IService<Scene> {
 
-    ResultData saveScene(SceneDto sceneDto);
+    ResultData saveScene(SceneDto sceneDto) throws UnsupportedEncodingException;
 
     Scene getByNum(String num);
 
-    SceneDetailVo getDetail(String num);
+    SceneDetailVo getDetail(String num) throws IOException;
 
     String uploadFile(MultipartFile file, String num) throws IOException;
 

+ 12 - 7
src/main/java/com/fdkankan/renderer/service/impl/SceneServiceImpl.java

@@ -23,6 +23,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.util.Objects;
 
 /**
@@ -44,7 +46,7 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
 
 
     @Override
-    public ResultData saveScene(SceneDto sceneDto) {
+    public ResultData saveScene(SceneDto sceneDto) throws UnsupportedEncodingException {
         String num = sceneDto.getNum();
         Scene scene = null;
         if(StrUtil.isNotEmpty(num)){
@@ -55,10 +57,12 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
         }
         scene.setTitle(sceneDto.getTitle());
 
-        String paramPath = String.format(paramDir, num).concat("param.txt");
+        String paramPath = ossDir.concat(num).concat("/").concat("param.txt");
         scene.setParamPath(paramPath);
-        FileUtil.mkParentDirs(paramPath);
-        FileUtil.writeUtf8String(sceneDto.getParam().toJSONString(), paramPath);
+//        FileUtil.mkParentDirs(paramPath);
+//        FileUtil.writeUtf8String(sceneDto.getParam().toJSONString(), paramPath);
+
+        fileStorageTemplate.uploadFileBytes(paramPath,sceneDto.getParam().toJSONString().getBytes(StandardCharsets.UTF_8.name()));
 
         this.saveOrUpdate(scene);
 
@@ -71,12 +75,13 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
     }
 
     @Override
-    public SceneDetailVo getDetail(String num) {
+    public SceneDetailVo getDetail(String num) throws IOException {
         Scene scene = this.getByNum(num);
         if(Objects.isNull(scene)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
-        String paramStr = FileUtil.readUtf8String(scene.getParamPath());
+//        String paramStr = FileUtil.readUtf8String(scene.getParamPath());
+        String paramStr = fileStorageTemplate.getFileContent(scene.getParamPath());
         return SceneDetailVo.builder().num(scene.getNum()).title(scene.getTitle()).createTime(scene.getCreateTime()).param(JSON.parseObject(paramStr)).build();
     }
 
@@ -84,7 +89,7 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
     public String uploadFile(MultipartFile file, String num) throws IOException {
 
         String originalFilename = file.getOriginalFilename();
-        String key = ossDir.concat(num).concat(File.separator).concat(originalFilename);
+        String key = ossDir.concat(num).concat("/").concat(originalFilename);
         String url = fileStorageTemplate.uploadFileStream(key, file.getInputStream());
 
         return url;