集成框架 -- OSS

ops/2025/2/12 15:30:32/

前言

接入oss必须有这两个文档基础

使用STS临时访问凭证访问OSS_对象存储(OSS)-阿里云帮助中心
前端上传跨域


正文

sts前后端通用,开通图示

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

后端实现代码

public static void main(String[] args) {String regionId = "cn-hangzhou";String endpoint = "sts.cn-hangzhou.aliyuncs.com";String accessKeyId = "accessKeyId"; //用户提供String accessKeySecret = "accessKeySecret";//用户提供String roleArn = "acs:ram::roleArn:role/ramoss";//角色提供String roleSessionName = "roleSessionName";// 自定义String bucket =  "bucket"; // 对应创建buket 前端上传记得开跨域String policy = "{\n" +"    \"Version\": \"1\", \n" +"    \"Statement\": [\n" +"        {\n" +"            \"Action\": [\n" +"                \"oss:PutObject\"\n" +"            ], \n" +"            \"Resource\": [\n" +"                \"acs:oss:*:*:sc-sale-servcie/test/*\" \n" +"            ], \n" +"            \"Effect\": \"Allow\"\n" +"        }\n" +"    ]\n" +"}";Long durationSeconds = 3600L;try {DefaultProfile.addEndpoint("", regionId, "Sts", endpoint);IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);// 构造client。DefaultAcsClient client = new DefaultAcsClient(profile);final AssumeRoleRequest request = new AssumeRoleRequest();request.setMethod(MethodType.POST);request.setRoleArn(roleArn);request.setRoleSessionName(roleSessionName);//request.setPolicy(policy);request.setDurationSeconds(durationSeconds);// 如果前端上传这个给前端 把跨域打开final AssumeRoleResponse response = client.getAcsResponse(request);System.out.println("Expiration: " + response.getCredentials().getExpiration());System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());System.out.println("Security Token: " + response.getCredentials().getSecurityToken());System.out.println("RequestId: " + response.getRequestId());// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build("https://oss-cn-hangzhou.aliyuncs.com", response.getCredentials().getAccessKeyId(), response.getCredentials().getAccessKeySecret(), response.getCredentials().getSecurityToken());PutObjectRequest putObjectRequest = new PutObjectRequest("reformer", "1/reformer.sql", new File("/Users/xushouchun/IdeaProjects/REformer-boot/fromer-start/src/main/resources/database/reformer.sql"));try {// 上传文件。PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);System.out.println("putObjectResult = " + JSON.toJSONString(putObjectResult));// copyCopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucket, "1/reformer.sql", bucket, "1/sql.reformer");ossClient.copyObject(copyObjectRequest);// 生成下载URLDate expirationDate = new Date(new Date().getTime() + durationSeconds); // URL 的有效期GeneratePresignedUrlRequest requests = new GeneratePresignedUrlRequest(bucket, "1/reformer.sql");requests.setExpiration(expirationDate);ossClient.generatePresignedUrl(requests);} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} finally {if (ossClient != null) {ossClient.shutdown();}}} catch (ClientException e) {System.out.println("Failed:");System.out.println("Error code: " + e.getErrCode());System.out.println("Error message: " + e.getErrMsg());System.out.println("RequestId: " + e.getRequestId());}}

总结

后端代码已经提供,前端就比较简单了,拿到钥匙直接upload就可以了。 一般脚手架都有,凭借url即可
前端文档: sts前端上传代码


http://www.ppmy.cn/ops/30310.html

相关文章

Hadoop概述

大数据处理技术 对大数据技术的基本概念进行简单介绍,包括分布式计算、服务器集群和 Google 的 3 个大数据技术。 分布式计算 对于如何处理大数据,计算机科学界有两大方向。 第一个方向是集中式计算,就是通过不断增加处理器的数量来增强单…

为何软件IT行业重视创新而不是稳定?

为何软件IT行业重视创新而不是稳定?用户为此受苦:用户体验差! 彼得-蒂尔有一句名言:"竞争是失败者的事"。 如果没有必要,就不要把自己置于被迫竞争的境地。 我给年轻程序员的建议是,如果你想创…

7、Flink 自定义 WaterMarkGenerator 案例

1、MyWaterMarkWatermarkGeneratorPeriodic 该 watermark 生成器场景:数据源在一定程度上乱序,即某个最新到达的时间戳为 t 的元素将在最早到达的时间戳为 t 的元素之后最多 n 毫秒到达。 class MyBoundedOutOfOrdernessGenerator implements Watermark…

算法学习Day1——【数据结构】单调栈

1.什么是单调栈以及单调栈的作用 (1)定义 顾名思义,单调栈是一个有序的栈,可能从栈顶到栈底单调递增(单调递增栈),也有可能从栈顶到栈底单调递减(单调递减栈)。 &…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 ?二、编写Shell脚本1. 基本规则2. shell 变量(1)创建变量(2)引用变量(3)删除变量(4)从键盘读取变量(5)特殊变…

JavaEE技术之MySql高级(索引、索引优化、sql实战、View视图、Mysql日志和锁、多版本并发控制)

文章目录 1. MySQL简介2. MySQL安装2.1 MySQL8新特性2.2 安装MySQL2.2.1 在docker中创建并启动MySQL容器:2.2.2 修改mysql密码2.2.3 重启mysql容器2.2.4 常见问题解决 2.3 字符集问题2.4 远程访问MySQL(用户与权限管理)2.4.0 远程连接问题1、防火墙2、账号不支持远程…

【会员单位】浙江晧月水务科技有限公司

中华环保联合会理事单位 水环境治理专业委员会副主任委员单位 公司成立于2018年3月14日,是专业研究废水处理业务的国家高新技术企业。 公司自主研发的脱硫废水“零排放”的技术,不仅适应性好,技术先进,智慧化程度高&#xff0c…

Python语言零基础入门——文件

目录 一、文件的基本概念 1.文件 2.绝对路径与相对路径 3.打开文件的模式 二、文件的读取 三、文件的追加 四、文件的写入 五、with语句 六、csv文件 1.csv文件的读取 2.csv文件的写入 七、练习题:实现日记本 一、文件的基本概念 1.文件 文件是以计算…