diff --git a/pom.xml b/pom.xml
index 2dfc3a22..5cbda664 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,7 @@
3.5.2
true
4.2.0
+ D:\workspace-main\JiaShiLi\jsl-questionnaire-base\src\main\resources\lib\
@@ -190,6 +191,18 @@
test
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ 3.16.1
+
+
+
+ joda-time
+ joda-time
+ 2.10
+
+
diff --git a/src/main/java/com/qs/serve/controller/CommonController.java b/src/main/java/com/qs/serve/controller/CommonController.java
index 4312a24f..46233ac2 100644
--- a/src/main/java/com/qs/serve/controller/CommonController.java
+++ b/src/main/java/com/qs/serve/controller/CommonController.java
@@ -5,6 +5,7 @@ import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.util.*;
+import com.qs.serve.modules.oss.service.OssService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@@ -32,6 +33,18 @@ public class CommonController {
private UploadProperties uploadProperties;
+ private OssService ossService;
+
+ /**
+ * 获取签名
+ * @param request
+ * @return
+ */
+ @SysLog(title = "文件",biz = BizType.UPLOAD)
+ @GetMapping("/getSign")
+ public R getSign(HttpServletRequest request) {
+ return R.ok(ossService.getPolicySign());
+ }
/**
diff --git a/src/main/java/com/qs/serve/modules/oss/entity/OssPolicySignVo.java b/src/main/java/com/qs/serve/modules/oss/entity/OssPolicySignVo.java
new file mode 100644
index 00000000..bb7dc034
--- /dev/null
+++ b/src/main/java/com/qs/serve/modules/oss/entity/OssPolicySignVo.java
@@ -0,0 +1,19 @@
+package com.qs.serve.modules.oss.entity;
+
+import lombok.Data;
+
+/**
+ * @author YenHex
+ * @since 2023/3/23
+ */
+@Data
+public class OssPolicySignVo {
+
+ private String accessId;
+ private String policy;
+ private String signature;
+ private String host;
+ private Long expire;
+ private String dir;
+
+}
diff --git a/src/main/java/com/qs/serve/modules/oss/service/OssService.java b/src/main/java/com/qs/serve/modules/oss/service/OssService.java
new file mode 100644
index 00000000..7d2d457d
--- /dev/null
+++ b/src/main/java/com/qs/serve/modules/oss/service/OssService.java
@@ -0,0 +1,18 @@
+package com.qs.serve.modules.oss.service;
+
+import com.qs.serve.modules.oss.entity.OssPolicySignVo;
+
+/**
+ * @author YenHex
+ * @since 2023/3/23
+ */
+public interface OssService {
+
+ /**
+ * 获取文件签名
+ * @return
+ */
+ OssPolicySignVo getPolicySign();
+
+
+}
diff --git a/src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java b/src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java
new file mode 100644
index 00000000..2a0d48d7
--- /dev/null
+++ b/src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java
@@ -0,0 +1,73 @@
+package com.qs.serve.modules.oss.service.impl;
+
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.common.utils.BinaryUtil;
+import com.aliyun.oss.model.MatchMode;
+import com.aliyun.oss.model.PolicyConditions;
+import com.qs.serve.common.util.JsonUtil;
+import com.qs.serve.modules.oss.entity.OssPolicySignVo;
+import com.qs.serve.modules.oss.service.OssService;
+import org.springframework.stereotype.Service;
+
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * @author YenHex
+ * @since 2023/3/23
+ */
+@Service
+public class OssServiceImpl implements OssService {
+
+ @Override
+ public OssPolicySignVo getPolicySign() {
+ // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
+ String endpoint = "oss-cn-guangzhou.aliyuncs.com";
+ // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
+ String accessKeyId = "LTAI5tHvNJT7M9YZJ9BSmURK";
+ String accessKeySecret = "OzH0ea3w8fgjrll9P0XTQlqmEg3Cky";
+ // 填写Bucket名称,例如examplebucket。
+ String bucketName = "qsjslservice";
+ // 创建OSSClient实例。
+ String accessUrl = "https://"+bucketName+"."+endpoint;
+ OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM/dd");
+ String dir = "jsl/" + sdf.format(new Date());
+
+
+ long expireTime = 30;
+ long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
+ Date expiration = new Date(expireEndTime);
+ PolicyConditions policyConds = new PolicyConditions();
+ policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
+ policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);
+
+ String postPolicy = ossClient.generatePostPolicy(expiration, policyConds);
+ byte[] binaryData = new byte[0];
+ try {
+ binaryData = postPolicy.getBytes("utf-8");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ String encodedPolicy = BinaryUtil.toBase64String(binaryData);
+ String postSignature = ossClient.calculatePostSignature(postPolicy);
+ OssPolicySignVo policySignVo = new OssPolicySignVo();
+ policySignVo.setAccessId(accessKeyId);
+ policySignVo.setPolicy(encodedPolicy);
+ policySignVo.setSignature(postSignature);
+ policySignVo.setHost(accessUrl);
+ policySignVo.setExpire(expireEndTime / 1000);
+ policySignVo.setDir(dir);
+ return policySignVo;
+ }
+
+ public static void main(String[] args) {
+ OssPolicySignVo v = new OssServiceImpl().getPolicySign();
+ System.out.println(JsonUtil.objectToJson(v));
+ }
+
+}
diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java
index 10eefc84..19387a1e 100644
--- a/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java
+++ b/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java
@@ -87,6 +87,13 @@ public class SysAttachController {
return R.error("上传失败");
}
+ @PostMapping("/save")
+ public R upload(@RequestBody SysAttach attach){
+ attach.setId(null);
+ sysAttachService.save(attach);
+ return R.ok(attach);
+ }
+
/**
* 根据ID查询