From 762167f3b4248055fc020277af1bd5724e29fec0 Mon Sep 17 00:00:00 2001
From: qirong <2032486488@qq.com>
Date: 星期三, 22 十一月 2023 17:16:27 +0800
Subject: [PATCH] 上传同步

---
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java |    3 
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java         |   23 +++--
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/uitil/HttpUtils.java                        |  138 ++++++++++++++++++++++++++++++++++
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java                 |    4 
 ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/SynchronousRequest.java       |   13 +++
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java     |    4 
 6 files changed, 168 insertions(+), 17 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/SynchronousRequest.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/SynchronousRequest.java
index c052ffc..a0a54ce 100644
--- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/SynchronousRequest.java
+++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/SynchronousRequest.java
@@ -16,10 +16,21 @@
     //ossId
     private String ossId;
     //鍒涘缓鏃堕棿
-    private Date createTime;
+//    private Date createTime;
     //鍒涘缓浜�
     private String createBy;
     //瀵嗙爜
     private String password;
 
+    @Override
+    public String toString() {
+        return "SynchronousRequest{" +
+            "file=" + file +
+            ", path='" + path + '\'' +
+            ", ossId='" + ossId + '\'' +
+//            ", createTime=" + createTime +
+            ", createBy='" + createBy + '\'' +
+            ", password='" + password + '\'' +
+            '}';
+    }
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java
index c95b39e..23440ee 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java
@@ -80,7 +80,7 @@
     @SaCheckPermission("system:oss:upload")
     @Log(title = "OSS瀵硅薄瀛樺偍", businessType = BusinessType.INSERT)
     @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public R<SysOssUploadVo> upload(@RequestPart("file") MultipartFile file) {
+    public R<SysOssUploadVo> upload(@RequestPart("file") MultipartFile file) throws IOException {
         if (ObjectUtil.isNull(file)) {
             return R.fail("涓婁紶鏂囦欢涓嶈兘涓虹┖");
         }
@@ -127,7 +127,7 @@
     @DeleteMapping("/{ossIds}/{password}")
     public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
                           @PathVariable Long[] ossIds,
-                          @PathVariable String password) {
+                          @PathVariable String password) throws Exception {
         return ossService.deleteWithValidByIds(List.of(ossIds), true,password) ? R.ok() : R.fail("鎻愬彇鐮侀敊璇紒");
     }
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java
index c9be0da..3464c5f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java
@@ -25,6 +25,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.Arrays;
 
 /**
@@ -104,7 +105,7 @@
      */
     @Log(title = "鐢ㄦ埛澶村儚", businessType = BusinessType.UPDATE)
     @PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public R<AvatarVo> avatar(@RequestPart("avatarfile") MultipartFile avatarfile) {
+    public R<AvatarVo> avatar(@RequestPart("avatarfile") MultipartFile avatarfile) throws IOException {
         if (!avatarfile.isEmpty()) {
             String extension = FileUtil.extName(avatarfile.getOriginalFilename());
             if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java
index bb53158..c84739d 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java
@@ -27,7 +27,7 @@
 
     SysOssVo getById(Long ossId);
 
-    SysOssVo upload(MultipartFile file);
+    SysOssVo upload(MultipartFile file) throws IOException;
 
     SysOssVo upload2(SynchronousRequest request);
 
@@ -35,7 +35,7 @@
 
     void download(Long ossId, HttpServletResponse response) throws IOException;
 
-    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid, String password);
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid, String password) throws Exception;
 
     R viewPasswordById(Long ossId);
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
index 7039952..6227391 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
@@ -139,7 +139,7 @@
     }
 
     @Override
-    public SysOssVo upload(MultipartFile file) {
+    public SysOssVo upload(MultipartFile file) throws IOException {
         String originalfileName = file.getOriginalFilename();
         String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
         OssClient storage = OssFactory.instance();
@@ -172,7 +172,7 @@
         }
         // 淇濆瓨鏂囦欢淇℃伅
         return buildResultEntity2(originalfileName, suffix, storage.getConfigKey(), uploadResult,request.getOssId(),
-            request.getPassword(), request.getCreateTime(), request.getCreateBy());
+            request.getPassword(), request.getCreateBy());
     }
 
 //    @Override
@@ -186,7 +186,7 @@
 //    }
 
     @NotNull
-    private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult, MultipartFile file) {
+    private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult, MultipartFile file) throws IOException {
         SysOss oss = new SysOss();
         oss.setUrl(uploadResult.getUrl());
         oss.setFileSuffix(suffix);
@@ -199,11 +199,11 @@
         SynchronousRequest request = new SynchronousRequest();
         request.setFile(file);
         request.setPath(uploadResult.getFilename() + "123");
-        request.setCreateTime(oss.getCreateTime());
+//        request.setCreateTime(new Date());
         request.setPassword(oss.getPassword());
         request.setCreateBy(String.valueOf(oss.getCreateBy()));
         request.setOssId(String.valueOf(oss.getOssId()));
-//        post(request);
+        post(request);
 
         SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
         return this.matchingUrl(sysOssVo);
@@ -217,14 +217,14 @@
      * @param uploadResult
      * @param ossId
      * @param password
-     * @param createTime
+//     * @param createTime
      * @param createBy
      * @return
      */
     @NotNull
     private SysOssVo buildResultEntity2(String originalfileName, String suffix, String configKey,
                                         UploadResult uploadResult, String ossId, String password,
-                                        Date createTime, String createBy) {
+                                         String createBy) {
         SysOss oss = new SysOss();
         oss.setOssId(Long.valueOf(ossId));
         oss.setUrl(uploadResult.getUrl());
@@ -233,7 +233,7 @@
         oss.setOriginalName(originalfileName);
         oss.setService(configKey);
         oss.setPassword(password);
-        oss.setCreateTime(createTime);
+        oss.setCreateTime(new Date());
         oss.setCreateBy(Long.valueOf(createBy));
         baseMapper.insert(oss);
         SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
@@ -241,7 +241,7 @@
     }
 
     @Override
-    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid, String password) {
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid, String password) throws Exception {
         if (isValid) {
             // 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
         }
@@ -251,6 +251,7 @@
             storage.delete(sysOss.getUrl());
             if(sysOss.getPassword().equals(password)){
                 baseMapper.deleteById(sysOss.getOssId());
+                HttpUtils.sendDeleteRequest("http://192.168.3.43/resource/oss",String.valueOf(sysOss.getOssId()));
                 return true;
             }
             return false;
@@ -286,7 +287,7 @@
         return oss;
     }
 
-    private String post(SynchronousRequest request){
+    private String post(SynchronousRequest request) throws IOException {
         HashMap<String, String> headers = new HashMap<>(3);
         String requestUrl = "http://192.168.3.43:8080/resource/oss/synchronization";
         ObjectMapper objectMapper = new ObjectMapper();
@@ -300,7 +301,7 @@
         }
         headers.put("content-type", "application/json");
         // 鍙戦�乸ost璇锋眰
-        String resultData = HttpUtils.sendPostWithJson(requestUrl, jsonString,headers);
+        String resultData = HttpUtils.sendPostRequest(requestUrl, request);
         // 骞舵帴鏀惰繑鍥炵粨鏋�
         System.out.println(resultData);
         return resultData;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/uitil/HttpUtils.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/uitil/HttpUtils.java
index d3fb7aa..194dd02 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/uitil/HttpUtils.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/uitil/HttpUtils.java
@@ -4,7 +4,20 @@
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.mime.HttpMultipartMode;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.dromara.common.oss.entity.SynchronousRequest;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
 import java.util.HashMap;
 
 public class HttpUtils {
@@ -38,5 +51,130 @@
         }
         return jsonResult;
     }
+
+    private static final String BOUNDARY = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
+    private static final String LINE_FEED = "\r\n";
+    private static final String CHARSET = "UTF-8";
+
+    public static File convert(MultipartFile multipartFile) throws IOException {
+        File file = new File(multipartFile.getOriginalFilename());
+        multipartFile.transferTo(file);
+        return file;
+    }
+
+    public static void sendPostRequest(String url, String stringParam, File fileParam) throws Exception {
+
+        URL obj = new URL(url);
+        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
+
+        // 璁剧疆POST璇锋眰
+        con.setRequestMethod("POST");
+        con.setDoOutput(true);
+        con.setDoInput(true);
+        con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
+
+        // 鏋勫缓璇锋眰浣�
+        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
+        wr.writeBytes("--" + BOUNDARY + LINE_FEED);
+        wr.writeBytes("Content-Disposition: form-data; name=\"stringParam\"" + LINE_FEED);
+        wr.writeBytes(LINE_FEED);
+        wr.writeBytes(stringParam + LINE_FEED);
+
+        wr.writeBytes("--" + BOUNDARY + LINE_FEED);
+        wr.writeBytes("Content-Disposition: form-data; name=\"fileParam\"; filename=\"" + fileParam.getName() + "\"" + LINE_FEED);
+        wr.writeBytes("Content-Type: " + HttpURLConnection.guessContentTypeFromName(fileParam.getName()) + LINE_FEED);
+        wr.writeBytes("Content-Transfer-Encoding: binary" + LINE_FEED);
+        wr.writeBytes(LINE_FEED);
+
+        FileInputStream inputStream = new FileInputStream(fileParam);
+        byte[] buffer = new byte[4096];
+        int bytesRead = -1;
+        while ((bytesRead = inputStream.read(buffer)) != -1) {
+            wr.write(buffer, 0, bytesRead);
+        }
+        wr.writeBytes(LINE_FEED);
+        wr.writeBytes("--" + BOUNDARY + "--" + LINE_FEED);
+
+        wr.flush();
+        wr.close();
+
+        // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+        int responseCode = con.getResponseCode();
+        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+        String inputLine;
+        StringBuffer response = new StringBuffer();
+        while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+        }
+        in.close();
+
+        // 鎵撳嵃鍝嶅簲缁撴灉
+        System.out.println("Response Code : " + responseCode);
+        System.out.println("Response : " + response.toString());
+    }
+
+    /**
+     * 涓婁紶鍚屾
+     * @param url
+     * @param entity
+     * @return
+     * @throws IOException
+     */
+    public static String sendPostRequest(String url, SynchronousRequest entity) throws IOException {
+        org.apache.http.client.HttpClient httpClient = HttpClientBuilder.create().build();
+        HttpPost httpPost = new HttpPost(url);
+
+        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
+
+        // 娣诲姞MultipartFile鍙傛暟
+        builder.addBinaryBody("file", entity.getFile().getBytes(), ContentType.MULTIPART_FORM_DATA, entity.getFile().getOriginalFilename());
+
+        // 娣诲姞String鍙傛暟
+        builder.addTextBody("path", entity.getPath(), ContentType.TEXT_PLAIN);
+        builder.addTextBody("ossId", entity.getOssId(), ContentType.TEXT_PLAIN);
+        builder.addTextBody("createBy", entity.getCreateBy(), ContentType.TEXT_PLAIN);
+        builder.addTextBody("password", entity.getPassword(), ContentType.TEXT_PLAIN);
+
+        HttpEntity multipart = builder.build();
+        httpPost.setEntity(multipart);
+
+        HttpResponse response = httpClient.execute(httpPost);
+        String responseBody = EntityUtils.toString(response.getEntity());
+        System.out.println("Response: " + responseBody);
+        return responseBody;
+    }
+
+    /**
+     * 鍒犻櫎鍚屾
+     * @param url
+     * @param parameter
+     * @throws Exception
+     */
+    public static void sendDeleteRequest(String url, String parameter) throws Exception {
+        // 鎷兼帴URL鍜屽弬鏁�
+        String deleteUrl = url + "/" + parameter;
+
+        // 鍒涘缓URL瀵硅薄鍜孒ttpURLConnection瀵硅薄
+        URL obj = new URL(deleteUrl);
+        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
+
+        // 璁剧疆璇锋眰鏂规硶涓篋ELETE
+        con.setRequestMethod("DELETE");
+
+        // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+        int responseCode = con.getResponseCode();
+        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+        String inputLine;
+        StringBuffer response = new StringBuffer();
+        while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+        }
+        in.close();
+
+        // 鎵撳嵃鍝嶅簲缁撴灉
+        System.out.println("Response Code : " + responseCode);
+        System.out.println("Response : " + response.toString());
+    }
 }
 

--
Gitblit v1.8.0