Browse Source

上传调整

contract
Yen 2 years ago
parent
commit
258930bb8d
  1. 13
      pom.xml
  2. 13
      src/main/java/com/qs/serve/controller/CommonController.java
  3. 19
      src/main/java/com/qs/serve/modules/oss/entity/OssPolicySignVo.java
  4. 18
      src/main/java/com/qs/serve/modules/oss/service/OssService.java
  5. 73
      src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java
  6. 7
      src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java

13
pom.xml

@ -27,6 +27,7 @@
<mybatis-plus.version>3.5.2</mybatis-plus.version>
<skipTests>true</skipTests>
<wx.java.version>4.2.0</wx.java.version>
<lib.dir>D:\workspace-main\JiaShiLi\jsl-questionnaire-base\src\main\resources\lib\</lib.dir>
</properties>
<dependencies>
@ -190,6 +191,18 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.16.1</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10</version>
</dependency>
</dependencies>
<build>

13
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());
}
/**

19
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;
}

18
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();
}

73
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));
}
}

7
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查询

Loading…
Cancel
Save