springcloud整合oss报403问题
一. 跨域问题——需要在服务器配置允许跨域
按照我上面配置,然后点击确定即可。
二. 权限问题——需要给ak和as设置管理OSS权限
1.先创建子用户,并将子用户设置对OSS管理权限
2.在对子用户设置对bucket资源访问权限
三. 过期时间expireTime问题——
String host = "https://" + bucket + "." + endpoint;
String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String dir = "backstage/"+format ; // 用户上传文件时指定的前缀。
Map<String, String> respMap = null;
try {
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 = postPolicy.getBytes("utf-8");
String encodedPolicy = BinaryUtil.toBase64String(binaryData);
String postSignature = ossClient.calculatePostSignature(postPolicy);
respMap = new LinkedHashMap<String, String>();
respMap.put("accessid", accessId);
respMap.put("policy", encodedPolicy);
respMap.put("signature", postSignature);
respMap.put("dir", dir);
respMap.put("host", host);
respMap.put("expire", String.valueOf(expireEndTime / 1000));
} catch (Exception e) {
System.out.println(e.getMessage());
}
return respMap;
<Error>
<Code>AccessDenied</Code>
<Message>The bucket you access does not belong to you.</Message>
<RequestId>5F092CD1E449963039187AC5</RequestId>
<HostId>gemme.oss-cn-hangzhou.aliyuncs.com</HostId>
</Error>
1.使用前端传过来的时间作为过期时间
2.将expireTime设置大一点,文档默认过期时间是30。