集成框架 -- OSS

news/2024/5/21 14:27:36

前言

接入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.mrgr.cn/p/57425384

相关文章

Day 20 Linux的WEB服务——apache

WEB服务简介 目前主流的web服务器软件 Linux:apache , nginx Windows-server:IIS 服务器安装nginx或apache后,叫做web服务器(又称WWW服务器) web服务器软件属于C/S框架模型 web服务器是一种被动程序只…

KCP 协议介绍与优化项

参考:https://luyuhuang.tech/2020/12/09/kcp.html https://xiaolincoding.com/network/ https://coolshell.cn/articles/11564.html1. 概述 kcp 是一个基于 udp 的应用层协议,其只负责实现 ARQ 算法,需要调用者提供网络数据收发和时钟驱动能力。 其典型图示如下:ikcp_send…

Avalonia在Godot内的渲染

请参考(JLeb.Estragonia)[https://github.com/MrJul/Estragonia]

分享一份物联网SAAS平台架构设计

一、架构图 ****二、Nginx**** 用于做服务的反向代理。 三、网关 **** PaaS 平台所有服务统一入口,包含 token 鉴权功能。 四、开放平台 **** 对第三方平台开放的服务入口。 五、MQTT**** MQTT 用于设备消息通信、内部服务消息通信。 六、Netty**** Socket 通信设备连接服务。…

springcloud按版本发布微服务达到不停机更新的效果

本文基于以下环境完成 spring-boot 2.3.2.RELEASEspring-cloud Hoxton.SR9spring-cloud-alibaba 2.2.6.RELEASEspring-cloud-starter-gateway 2.2.6.RELEASEspring-cloud-starter-loadbalancer 2.2.6.RELEASEnacos 2.0.3 一、思路 实现思路: 前端项目在请求后端接…

Rust中的并发性:Sync 和 Send Traits

在并发的世界中,最常见的并发安全问题就是数据竞争,也就是两个线程同时对一个变量进行读写操作。但当你在 Safe Rust 中写出有数据竞争的代码时,编译器会直接拒绝编译。那么它是靠什么魔法做到的呢? 这就不得不谈 Send 和 Sync 这两个标记 trait 了,实现 Send 的类型可以在…

【Webgl_glslThreejs】搬运分享shader_飘落心形

来源网站 https://www.shadertoy.com/view/4sccWr效果预览 代码演示 将shadertory上的代码转成了threejs可以直接用的代码,引入文件的material,并在创建mesh或已有物体上使用material即可,使用时请注意uv对齐。 import { DoubleSide, Shad…

Redis缓存介绍以及常见缓存问题:穿透、雪崩和击穿

概念 缓存就是数据交换的缓冲区(Cache),是存贮数据的临时地方,一般读写性能较高。 作用: 降低后端负载 提高读写效率,降低相应时间 成本: 数据一致性成本 代码维护成本 运维成本 缓存更…

通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?

通义灵码是基于通义大模型,结合海量开源知识以及阿里云的文档 SDK 开发的,从而有了上层的代码补全和研发问答的核心能力。再上层便是我们工程侧,比如说有问答意图识别、用户习惯学习、Prompt 工程、跨文件学习等等。从基模到垂直领域的模型,再到端侧核心能力的整体同步建设…

17_Linux中断

Linux中断 1.什么是中断? CPU在正常运行期间,由外部或者内部引起的事件,让CPU停下当前正在运行的程序,转而去执行触发他的中断所对应的程序,这个就是中断。 举例: 我现在正在厨房做饭,突然电话响了,然后我关火去接电话,接完电话在回去开火继续做饭,这个过程就是中断的…

16_ioctl接口

ioctl接口 struct file_operations {......long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);...... };1.什么是unlocked_ioctl接口? ​ unlocked_ioctl就是ioctl接口,但是功能和对应的系统调用均没有发生变化。 2.unlocked_ioctl和read/write函数…

解锁HDC 2024之旅:从购票到报名,全程攻略

HDC 2024购票报名全攻略全部奉上~本文分享自华为云社区《解锁HDC 2024之旅:从购票到报名,全程攻略》,作者:华为云社区精选。 Hi,代码界的小伙伴们,集结号已经吹响了!华为开发者大会(HDC 2024)——这场汇聚了HarmonyOS NEXT鸿蒙星河版、盘古大模型5.0等创新火花与智慧碰…

2024年武汉东湖高新水测成绩出来了

本次水测通过人员有1016名,通过的人数还是蛮多的,水测其实没有大家想象的那么难,现在职称评审都是水测线下评审的模式进行的。 水平测试分机考,笔试和面试答辩,各区随机安排选其一,机考就相当于考驾照刷题&…

Unity性能分析(四)Unity性能分析工具使用

使用Profiler 按照以下步骤开始使用 Unity Profiler:在进行分析时,必须使用开发版本。File > Build Settings > Development Build。 勾选Autoconnect Profile(可选)。 注意:Autoconnect Profile会增加初始启动时间。如果不启用Autoconnect Profiler,可以随时手动连…

如何防止源代码泄露?6种企业防泄密解决方案

在数字化转型浪潮中,源代码成为企业宝贵的核心资产,其安全性直接关系到企业的生存和发展。源代码泄露不仅会导致商业秘密外泄,还可能造成严重的经济损失和品牌信誉下降。为此,采用高效的防泄密措施,如华企盾DSC数据防泄密系统,成为企业保护源代码不可或缺的策略。以下是结…

【算法每日一练】

蛮有意思的的一道题,最后要判断能否成为一种1~n的全排列,我最这样做的: 整个数组先排序一下。假设遍历到了i,那就判断前面b和r的个数,但是有想到了后面可能还会对前面的结果产生影响,所以就抛弃了这个想法…

Unity性能分析(二)CPU/GPU分析

设置每帧时间预算 帧率(fps)并不是衡量游戏稳定体验的理想指标。考虑以下情况:在运行时的前0.75s内渲染了59帧。然后接下来的1帧需要0.25s才能渲染完毕。虽然是60fps,但实际上会让玩家感觉卡顿。 这是需要设置帧时间预算的重要原因之一。这为您提供了一个目标,在对游戏进行…

Unity性能分析(三)内存分析

Unity中有两种分析内存的方法:Memory Profiler :内置的分析器,提供内存使用的基本信息。 Memory Profiler package:将package添加到项目中,更详细地分析内存使用情况。可以存储和比较快照查找内存泄漏,查看内存布局以查找内存碎片问题。确定物理RAM限制 每个目标平台都有…

【Web】D^3CTF之浅聊d3pythonhttp——TE-CL请求走私

目录 step0 题目信息 step1 jwt空密钥伪造 step1.5 有关TE&CL的lab step2 TE-CL请求走私 payload1 payload2 step0 题目信息 注意到题目源码前端是flask写的,后端是web.py写的 frontend from flask import Flask, request, redirect, render_templat…

初识MVC

初识MVC 理论部分 今天第一次学MVC,拿到一个练手项目。现在来记录一下学习过程。 项目的背景就是个学生管理系统。我只做后端。 从大的来说MVC将应用程序分为三个主要组件(部分): 模型(Model)是应用程序…