前端直接上传文件至OSS

解决的问题:当前端并发上传大量文件至服务器时,服务器带宽存在瓶颈,会影响上传速度

解决方案:使用STS临时访问凭证访问OSS

流程:

p273744.jpg

获取RAM权限

根据不同项目使用情况,向公司OSS管理员(杨坤)提供bucket信息,申请权限。具体包含以下内容:

  • stsAccessKeyId

  • stsAccessKeySecret

  • stsRoleArn

  • stsRegionId

  • stsEndpoint

后端根据RAM权限,获取临时访问凭证

/**
 * 获取SecurityToken
 * @author yangkun
 * @date 2022/4/25 11:57
 * @return: com.aliyuncs.auth.sts.AssumeRoleResponse.Credentials
 **/
 public static AssumeRoleResponse.Credentials getSecurityToken(){
 String roleSessionName = "SessionTest";
 AssumeRoleResponse response = null;
 try {
 DefaultProfile.addEndpoint("",stsRegionId, "Sts", stsEndpoint);
 // 构造default profile
 IClientProfile profile = DefaultProfile.getProfile(stsRegionId, stsAccessKeyId, stsAccessKeySecret);
 // 构造client
 DefaultAcsClient client = new DefaultAcsClient(profile);
 final AssumeRoleRequest request = new AssumeRoleRequest();
 request.setMethod(MethodType.POST);
 request.setRoleArn(stsRoleArn);
 request.setRoleSessionName(roleSessionName);
 request.setPolicy(null);
 request.setDurationSeconds(3600L);
 response = client.getAcsResponse(request);
 } catch (Exception e) {
 log.error("获取securityToken失败",e);
 }
 return response.getCredentials();
 }
image-20220425172944683.png

前端根据临时访问凭证上传文件



 
 
 Document
 

 
 
 
 
 
 
 

前端在发起文件上传请求前,判断是否接近过期时间或已超过过期时间,并及时刷新临时访问凭证。

你可能感兴趣的:(前端直接上传文件至OSS)