6 changed files with 143 additions and 0 deletions
@ -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; |
||||
|
|
||||
|
} |
@ -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(); |
||||
|
|
||||
|
|
||||
|
} |
@ -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)); |
||||
|
} |
||||
|
|
||||
|
} |
Loading…
Reference in new issue