集成框架 -- OSS

前言

接入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.mzph.cn/web/5192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Emby Notifier——一个媒体通知推送服务

Emby Notifier 这是另一个项目 watchdog_for_Emby 的最新优化版本,取消了 nfo 文件的监视依赖,该版本不再需要手动设置媒体库路径,对通过网盘挂载生成的媒体库更加友好~ Emby Server 版本 (重要!!!) 4.8.0…

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

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

Leetcode—1041. 困于环中的机器人【中等】

2024每日刷题&#xff08;121&#xff09; Leetcode—1041. 困于环中的机器人 实现代码 class Solution { public:bool isRobotBounded(string instructions) {int x 0;int y 0;int d 0;vector<vector<int>> direction{{0, 1}, {1, 0}, {0, -1}, {-1, 0}};for…

机遇与挑战并存的Agent

随着大模型技术的突飞猛进,如GPT-4、Baichuan-3等的问世,人们对 Agent AI 智能体的未来发展普遍持乐观态度。这些先进的语言模型极大地提升了智能体的语言理解和生成能力,使其在自然语言处理任务上接近甚至超越人类水平。同时,多模态大模型的崛起,让智能体具备了多种形式的感知…

C++二要素认证,游戏实名认证接口、金融实名认证

随着移动互联的发展&#xff0c;越来越多的企业在金融市场都想分一杯羹&#xff0c;而哪种理财产品才是人们放心的理财产品呢&#xff1f;我们都知道理财产品开户都需要上传身份证号核验和图像进行验证&#xff0c;以保证个人信息的真实性&#xff0c;那么这些是如何来判别身份…

网络安全主题纪录片

网络安全主题纪录片 文章目录 网络安全主题纪录片第四公民黑客帝国系列龙纹身女孩碟中谍系列虎胆龙威4匿名者终结者2&#xff1a;审判日东方快车谋杀案黑客国家公敌我是谁&#xff1a;没有绝对安全的系统黑客军团速度与激情系列十亿美元大劫案勒索软件的背后黑客的恐惧为什么网…

【LeetCode周赛】第 394 场周赛

目录 3120. 统计特殊字母的数量 I 简单3121. 统计特殊字母的数量 II 中等3122. 使矩阵满足条件的最少操作次数 中等3123. 最短路径中的边 困难 3120. 统计特殊字母的数量 I 简单 3120. 统计特殊字母的数量 I 分析&#xff1a; 模拟即可 代码&#xff1a; class Solution { …

Map的compute方法详解(Java)

1.compute方法 compute 方法是 Map 接口中的一个方法&#xff0c;用于根据指定的键和计算函数对指定键的值进行修改。 方法的签名如下&#xff1a; default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)key&#xff1a;要操…

兰姆顿食尸鬼

弗农弗罗斯特(出生日期不详- 1891年11月13日)&#xff0c;加拿大佃农&#xff0c;杀人犯&#xff0c;被认为是超自然的存在[谁知道?被称为“兰姆顿食尸鬼”。 背景 弗农弗罗斯特在1858年之前的生活细节是未知的&#xff0c;当时他在安大略省兰姆顿县的一个苹果园工作。根据土…

Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南

文章目录 一、安装vscode和配置pyside6环境二、安装vscode扩展三、扩展配置编辑四、编辑运行 一、安装vscode和配置pyside6环境 这一步默认已经通过了 二、安装vscode扩展 三、扩展配置编辑 四个地方需要修改&#xff1b;rcc路径、uic路径、designer.exe路径 uic.exe 用于将…

基于Docker + Locust的数据持久化性能测试系统

前几天给大家分享了如何使用Locust进行性能测试&#xff0c;但是在实际使用中会发现存在压测的结果无法保存的问题&#xff0c;比如在分布式部署情况下进行压测&#xff0c;每轮压测完成需要释放资源删除容器重新部署后&#xff0c;这段时间的压测结果就都丢失了&#xff0c;如…

docker-compose docker的批量管理工具

安装 apt-get install docker-compose -y # 查看版本 docker-compose -v设置容器自启动&#xff1a;–restartalways docker run -it -d --restartalways nginx:1.16docker-compose.yml配置文件&#xff0c;该文件的缩进必须是三个空格&#xff0c;使用的是yaml语法。 versi…

Oracle 表分区

1.概述 分区表就是将表在物理存储层面分成多个小的片段&#xff0c;这些片段即称为分区&#xff0c;每个分区保存表的一部分数据&#xff0c;表的分区对上层应用是完全透明的&#xff0c;从应用的角度来看&#xff0c;表在逻辑上依然是一个整体。 目的&#xff1a;提高大表的查…

信息收集。

信息收集 接着使用cs进行信息收集 发现域内管理员账号。 然后查看pc信息&#xff0c; 查看进程。 发现域为god.org 尝试定位域控。 提权 使用cs的功能进行权限提权 成功获取管理员权限。 hash抓取 接着抓hash 成功抓到管理员账号、密码。 接着进行横向传递 成功获取AD和…

React的数据Mock实现

在前后端分类的开发模式下&#xff0c;前端可以在没有实际后端接口的支持下先进行接口数据的模拟&#xff0c;进行正常的业务功能开发 1. 常见的Mock方式 2. json-server实现Mock 实现步骤&#xff1a; 项目中安装json-server npm i -D json-server准备一个json文件 {"…

vue中如何正确使用异步async和await

async 是异步的意思&#xff0c;而 await 是等待的意思&#xff0c;await 用于等待一个异步任务执行完成的结果。 1.async/await 是一种编写异步代码的新方法&#xff08;以前是采用回调和 promise&#xff09;。 2. async/await 是建立在 promise 的基础上。 3. async/await 像…

计算机毕业设计python基于django框架的网上拍卖系统

创新点&#xff1a;本系统采用英国式拍卖和荷兰式拍卖两种模式&#xff0c;英国式拍卖也叫升价拍卖。这是最普遍的一种拍卖方式。拍卖人设定一个底价&#xff0c;竞买人相继给出更高的价格&#xff0c;最终出价最高者胜出&#xff0c;并支付最高价。这种形式在电影中非常常见&a…

PHP源码_新ui潮乎盲盒_h5源码

运行截图 源码贡献 https://githubs.xyz/boot?app40 数据库部份表 -- -- 表的结构 la_box_mark --CREATE TABLE la_box_mark (id int(10) UNSIGNED NOT NULL,icon varchar(191) COLLATE utf8_unicode_ci DEFAULT ,bg_thumb varchar(191) COLLATE utf8_unicode_ci DEFAULT N…

react props传参

props是父子传参的常用方法。 一、主要功能 1.传参 定义&#xff1a;父级组件向子级组件传递参数。 2.验证数据类型格式 定义&#xff1a;可以指定父组件传递过来数据为指定类型。 3.设置默认值 定义&#xff1a;在参数未使用时&#xff0c;直接默认为指定值。 二、实例代…

c++详解栈和队列——及模拟实现stack——queue——例题

初来乍到&#xff0c;望大家点点赞&#xff0c;点点关注&#xff0c;谢谢各位看官老爷 个人主页 在c语言中我们已经模拟实现过栈和队列了&#xff0c;对其底层结构有了基本的认识 栈和队列的详讲 文章目录 目录 文章目录 前言 一、了解栈和队列是什么&#xff1f; ​编辑​编辑…