集成框架 -- 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…

网络安全主题纪录片

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

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;如…

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文件 {"…

计算机毕业设计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; ​编辑​编辑…

【信号与系统杂谈 - 1】为什么拉普拉斯变换有收敛域而傅里叶变换没有

这个问题是我在推导傅里叶变换的时移特性公式和拉普拉斯变换的延时特性公式时发现的&#xff08;即拉氏变换总是需要考虑收敛域的原因&#xff09; 援引知乎上的回答解释

【Linux系统编程】第十一弹---编辑器vim使用

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、vim的基本概念 2、vim的基本操作 3、vim插入模式命令集 4、vim正常(命令)模式命令集 5、vim末行模式命令集 6、vim操作…

支持向量机回归(概念+实例)

目录 前言 一、基本概念 1. 支持向量机回归的原理 2. 支持向量机回归的工作方式 3. 支持向量机回归的优缺点 4. 支持向量机回归的应用 二、实例 前言 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种强大的机器学习算法&#xff0c;最初…

数据结构与算法(Java版) | 详解十大经典排序算法之一:插入排序

接下来&#xff0c;我来给大家讲解第三种排序算法&#xff0c;即插入排序。 基本介绍 首先&#xff0c;我们来看下插入排序的基本介绍。 插入排序&#xff0c;其属内部排序法&#xff0c;是对于欲排序的元素以插入的方式来找寻该元素的适当位置&#xff0c;以便最终达到排序…

2024年十五届蓝桥杯省赛大学B组真题(Java完整版)

2024年十五届蓝桥杯省赛大学B组真题&#xff08;Java&#xff09; 前言&#xff1a; 赛后一直犹豫要不要对比赛进行复盘出个题解&#xff0c;拖到了现在&#xff0c;终于也是等到比赛结果出来&#xff0c;看到没有辜负个人期望成功取得省一&#xff0c;决定在国赛前对省赛进行…

根据txt文件绘制词云 -- python

根据一段文字绘制词云&#xff0c;我们有两种方法 &#xff0c;一种是登录专业的绘图网站http://yciyun.com/ 不过&#xff0c;貌似这个网站需要会员才可以体验&#xff0c;他只是给出了一些形状图案的词云&#xff0c;虽然看起来很精美&#xff0c;但是他不能让我们自己随意更…

第三节课,功能2:开发后端用户的管理接口5min(用户的查询/状态更改)【4】【9开始--本人】

一、代码任务 【录个屏】 二、写代码 2.1 代码文件位置 2.2 代码如下&#xff1a; 2.3 官方文档&#xff1a; 网址&#xff1a; 逻辑删除 | MyBatis-Plus (baomidou.com) 三、代码有bug&#xff0c;没有鉴权&#xff0c;表里添加一个字段。role 管理员 3.1 判断操作的人&am…