xiexiang 2 anos atrás
pai
commit
90a87fbe31

+ 11 - 0
PAS/src/main/java/cn/cslg/pas/controller/ScratchWordsController.java

@@ -13,7 +13,10 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.*;
 
 @Tag(name = "划词高亮")
@@ -23,6 +26,7 @@ import java.util.*;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ScratchWordsController {
     private final ScratchWordsService scratchWordsService;
+    private final FileManagerService fileManagerService;
 
     @checkAuth(FunId = "/workspace/scratchWords/add")
     @Operation(summary = "新增划词高亮")
@@ -67,4 +71,11 @@ public class ScratchWordsController {
             return Response.error("删除失败");
         }
     }
+
+    @GetMapping("/upload")
+    public String upload(List<MultipartFile> multipartFiles,Integer sourceId) throws IOException {
+        fileManagerService.uploadFile(multipartFiles,sourceId);
+        return Response.success();
+    }
+
 }

+ 59 - 0
PAS/src/main/java/cn/cslg/pas/service/FileManagerService.java

@@ -0,0 +1,59 @@
+package cn.cslg.pas.service;
+
+import com.google.gson.Gson;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.springframework.stereotype.Service;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+import static cn.hutool.core.io.FileUtil.getMimeType;
+
+/**
+ * Okhttp调用FMS上传文件接口
+ * @Author xiexiang
+ * @Date 2023/8/10
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+public class FileManagerService {
+
+    public String uploadFile(List<MultipartFile> multipartFiles, Integer sourceId) throws IOException {
+        List<File> files = new ArrayList<>();
+        for(MultipartFile multipartFile:multipartFiles){
+            File file = new File(multipartFile.getOriginalFilename());
+            FileCopyUtils.copy(multipartFile.getBytes(),file);
+            files.add(file);
+        }
+        MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder()
+                .setType(MultipartBody.FORM);
+        for(File file:files){
+            //根据文件名获取文件的MIME类型
+            String mimeType = getMimeType(file.getPath());
+            multipartBodyBuilder.addFormDataPart("files",file.getName(),RequestBody.create(MediaType.parse(mimeType), file));
+        }
+        RequestBody requestBody =multipartBodyBuilder
+                .addFormDataPart("sourceId", String.valueOf(sourceId))
+                .build();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url("http://localhost:8111" + "/fileManager/uploadSystemFile")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+}