进入OSS控制台创建桶,配置需求根据实际修改,地域选择理你近的

在这里插入图片描述

去RAM控制台创建角色

在这里插入图片描述

创建用户,记得打开OpenAPI调用,记得保存AccessKey和AccessKey Secret

在这里插入图片描述

创建导入STS权限

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

给创建好的用户添加权限在这里插入图片描述

在这里插入图片描述

创建角色并授权与用户一样的权限

在这里插入图片描述

引入依赖

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-sts</artifactId>
	<version>3.1.2</version>
</dependency>

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>sts20150401</artifactId>
	<version>1.1.4</version>
</dependency>

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-core</artifactId>
	<version>4.6.0</version>
</dependency>

阿里云配置类

@Configuration
public class ALiYunOSSConfig {
    // accesskeyid
    public static final String ACCESSKEYID = "LTAI...";
    // accesskeysecret
    public static final String ACCESSKEYSECRET = "xwe...";
    // 地区
    public static final String REGIONID = "cn-shenzhen";
    // 角色 Arn
    public static final String ROLEARN = "acs:ram...";

    @Bean
    public IAcsClient client() {
        DefaultProfile profile = DefaultProfile.getProfile(REGIONID, ACCESSKEYID, ACCESSKEYSECRET);
        return new DefaultAcsClient(profile);
    }
}
@Autowired
private IAcsClient client;

public Map<String, Object> aliyunCertificate() {
    AssumeRoleRequest request = new AssumeRoleRequest();
    request.setRoleArn(ALiYunOSSConfig.ROLEARN);
    request.setRoleSessionName(UUIDGenerator.generate());
    AssumeRoleResponse response = null;
    try {
        response = client.getAcsResponse(request);
    } catch (ClientException e) {
        throw new RuntimeException(e);
    }
    Map<String, Object> map = new HashMap<>();
    map.put("securityToken", response.getCredentials().getSecurityToken());
    map.put("expiration", response.getCredentials().getExpiration());
    map.put("accessKeySecret", response.getCredentials().getAccessKeySecret());
    map.put("accessKeyId", response.getCredentials().getAccessKeyId());
    map.put("regionid", ALiYunOSSConfig.REGIONID);
    return map;
}

使用临时凭证上传文件

@GetMapping("/temp-upload")
public Result<?> temCertificate() {
    String tempSecretId = "STS.NU...";
    String tempSecretKey = "B6oGWqX...";
    String sessionToken = "CAIS0wJ1q6Ft5B2yfSjIr5bN...";
    String regionid = "cn-shenzhen";
    String endpoint = "https://oss-" + regionid + ".aliyuncs.com";
	String bucket = "桶的名称"
    OSS ossClient = new OSSClientBuilder().build(endpoint, tempSecretId, tempSecretKey, sessionToken);
    PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, "1.png", new File("C:\\Users\\pc\\Desktop\\1.png"));
    
    ossClient.putObject(putObjectRequest);

    return Result.ok();
}

官方文档

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐