FengChaoYu hai 3 semanas
pai
achega
b6326f6761

+ 6 - 0
src/main/java/com/gree/mall/miniapp/controller/common/CommonController.java

@@ -272,4 +272,10 @@ public class CommonController {
         response.sendRedirect(file);
     }
 
+    @ApiNotAuth
+    @GetMapping("/oss/config")
+    public ResponseHelper getOSSConfig() throws UnsupportedEncodingException {
+        Map<String, String> ossConfig = commonLogic.getOSSConfig();
+        return ResponseHelper.success(ossConfig);
+    }
 }

+ 4 - 0
src/main/java/com/gree/mall/miniapp/logic/common/CommonLogic.java

@@ -289,6 +289,10 @@ public class CommonLogic {
         return url;
     }
 
+    public Map<String, String> getOSSConfig() throws UnsupportedEncodingException {
+        Map<String, String> config = ossUtil.getConfig();
+        return config;
+    }
 
 
 

+ 27 - 0
src/main/java/com/gree/mall/miniapp/utils/oss/OSSUtil.java

@@ -115,4 +115,31 @@ public class OSSUtil {
         return resultUrl;
     }
 
+    public Map<String, String> getConfig() throws UnsupportedEncodingException {
+        OSS client = buildClient();
+        String host = "https://" + OSS_BUCKET_NAME + "." + OSS_ENDPOINT_WW; // host的格式为 bucketname.endpoint
+
+//        OSSClient client = new OSSClient(endpoint, accessId, accessKey);
+        long expireTime = 300;
+        long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
+        java.sql.Date expiration = new java.sql.Date(expireEndTime);
+        PolicyConditions policyConds = new PolicyConditions();
+        policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
+        policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, getFilePath());
+
+        String postPolicy = client.generatePostPolicy(expiration, policyConds);
+        byte[] binaryData = postPolicy.getBytes("utf-8");
+        String encodedPolicy = BinaryUtil.toBase64String(binaryData);
+        String postSignature = client.calculatePostSignature(postPolicy);
+
+        Map<String, String> respMap = new LinkedHashMap<String, String>();
+        respMap.put("OSSAccessKeyId", ACCESS_KEY_ID);
+        respMap.put("expire", String.valueOf(expireEndTime / 1000));
+        respMap.put("policy", encodedPolicy);
+        respMap.put("signature", postSignature);
+        respMap.put("id", ACCESS_KEY_ID);
+        respMap.put("dir", getFilePath()+"/");
+        respMap.put("host", host);
+        return respMap;
+    }
 }