web直传阿里OSS

推荐观看官方文档

安装:https://help.aliyun.com/document_detail/64041.html

OSS鉴权详解:https://help.aliyun.com/document_detail/100624.htm?spm=a2c4g.11186623.0.0.3e141c58AiWb1H#concept-xzh-nzk-2gb


配置

不要弄错,不然就说你没有权限之类

添加用户:

记录 accessKeyId和 accessKeySecret 并设置AliyunSTSAssumeRoleAccess权限策略


添加自定义权限策略

“oss:PutObject” 是上传,也可以写别的 ,我直接写的*

{"Version": "1","Statement": [{"Effect": "Allow","Action": ["oss:PutObject"],"Resource": ["acs:oss:*:*:examplebucket/exampledir","acs:oss:*:*:examplebucket/exampledir/*"]}]
}

添加角色并添加刚刚的自定义权限策略

记录releArn


设置仓库的跨域访问

记录 endpoint 、regionID 、bucket


后端dome

地址:https://help.aliyun.com/document_detail/100624.htm?spm=a2c4g.11186623.0.0.3e141c58kwxJwC#concept-xzh-nzk-2gb

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
public class StsServiceSample {public static void main(String[] args) { // STS接入地址,例如sts.cn-hangzhou.aliyuncs.com。       String endpoint = "<sts-endpoint>";// 填写步骤1生成的访问密钥AccessKey ID和AccessKey Secret。String AccessKeyId = "<yourAccessKeyId>";String accessKeySecret = "<yourAccessKeySecret>";// 填写步骤3获取的角色ARN。String roleArn = "<yourRoleArn>";// 自定义角色会话名称,用来区分不同的令牌,例如可填写为SessionTest。        String roleSessionName = "<yourRoleSessionName>";// 以下Policy用于限制仅允许使用临时访问凭证向目标存储空间examplebucket上传文件。// 临时访问凭证最后获得的权限是步骤4设置的角色权限和该Policy设置权限的交集,即仅允许将文件上传至目标存储空间examplebucket下的exampledir目录。String policy = "{\n" +"    \"Version\": \"1\", \n" +"    \"Statement\": [\n" +"        {\n" +"            \"Action\": [\n" +"                \"oss:PutObject\"\n" +"            ], \n" +"            \"Resource\": [\n" +"                \"acs:oss:*:*:examplebucket/*\" \n" +"            ], \n" +"            \"Effect\": \"Allow\"\n" +"        }\n" +"    ]\n" +"}";try {// regionId表示RAM的地域ID。以华东1(杭州)地域为例,regionID填写为cn-hangzhou。也可以保留默认值,默认值为空字符串("")。String regionId = "";// 添加endpoint。适用于Java SDK 3.12.0及以上版本。DefaultProfile.addEndpoint(regionId, "Sts", endpoint);// 添加endpoint。适用于Java SDK 3.12.0以下版本。// DefaultProfile.addEndpoint(endpointName, "", regionId, product: "Sts", endpoint);// 构造default profile。IClientProfile profile = DefaultProfile.getProfile(regionId, AccessKeyId, accessKeySecret);// 构造client。DefaultAcsClient client = new DefaultAcsClient(profile);final AssumeRoleRequest request = new AssumeRoleRequest();// 适用于Java SDK 3.12.0及以上版本。request.setSysMethod(MethodType.POST);// 适用于Java SDK 3.12.0以下版本。//request.setMethod(MethodType.POST);request.setRoleArn(roleArn);request.setRoleSessionName(roleSessionName);request.setPolicy(policy); // 如果policy为空,则用户将获得该角色下所有权限。request.setDurationSeconds(3600L); // 设置临时访问凭证的有效时间为3600秒。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());} 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());}}
}

前端dome

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>Document</title></head><body><button id="submit">上传</button><input id="file" type="file" /><!-- 导入SDK文件 --><scripttype="text/javascript"src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.16.0.min.js"></script><script type="text/javascript">const client = new OSS({// yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。region: 'yourRegion',// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。accessKeyId: 'yourAccessKeyId',accessKeySecret: 'yourAccessKeySecret',// 从STS服务获取的安全令牌(SecurityToken)。stsToken: 'yourSecurityToken',// 填写Bucket名称。bucket: 'examplebucket'});// 从输入框获取file对象,例如<input type="file" id="file" />。const data = document.getElementById("file").files[0];// 创建并填写Blob数据。//const data = new Blob(['Hello OSS']);// 创建并填写OSS Buffer内容。//const data = new OSS.Buffer('Hello OSS']);const upload = document.getElementById("upload");const headers = {// 指定该Object被下载时网页的缓存行为。// 'Cache-Control': 'no-cache', // 指定该Object被下载时的名称。// 'Content-Disposition': 'oss_download.txt', // 指定该Object被下载时的内容编码格式。// 'Content-Encoding': 'UTF-8', // 指定过期时间。// 'Expires': 'Wed, 08 Jul 2022 16:57:01 GMT', // 指定Object的存储类型。// 'x-oss-storage-class': 'Standard', // 指定Object的访问权限。// 'x-oss-object-acl': 'private', // 设置Object的标签,可同时设置多个标签。// 'x-oss-tagging': 'Tag1=1&Tag2=2', // 指定CopyObject操作时是否覆盖同名目标Object。此处设置为true,表示禁止覆盖同名Object。// 'x-oss-forbid-overwrite': 'true', };async function putObject () {try {// 填写Object完整路径。Object完整路径中不能包含Bucket名称。// 您可以通过自定义文件名(例如exampleobject.txt)或文件完整路径(例如exampledir/exampleobject.txt)的形式实现将数据上传到当前Bucket或Bucket中的指定目录。// data对象可以自定义为file对象、Blob数据或者OSS Buffer。const result = await client.put("exampledir/exampleobject.txt",data//{headers});console.log(result);} catch (e) {console.log(e);}}upload.addEventListener("click", () => {putObject();});</script></body>
</html>

完整的dome

下载: http://lihong.zhengxinghua.top/ossdemo.zip

解压后修改成自己的配置,启动就好了

参考视频:https://www.bilibili.com/video/BV1kh411Q7Vs?from=search&seid=9310389602228937453&spm_id_from=333.337.0.0


结束

OSS玩了一个星期,基础功能终于弄明白了

坚持总会实现的,加油我们的青春~

web直传阿里OSS相关推荐

  1. 完整记录一下Web前端直传阿里OSS大文件+采用后端临时授权传stsToken的方式

    文章目录 前言(可不看) 1. 简介 2. 必要了解项 2.1 资源术语 2.2 常用SDK 3. 准备工作 3.1 创建bucket 3.2 设置跨域规则 3.3 创建RAM子账户及配置权限 3.4 ...

  2. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS

    继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...

  3. 微信小程序录音直传阿里云OSS并语音识别

    前言 如题:做一个录音文字识别功能,知识点有三个,分别是微信小程序的录音功能.录音文件直传阿里云OSS.使用阿里云的录音文件识别接口返回识别后的文字 一.微信小程序录音 官方文档:微信小程序全局唯一的 ...

  4. 封装直传阿里云存储文件上传控件

    本文目标 封装一个直传阿里云OSS云存储图片上传控件 控件效果图 上传之前 上传成功 预览图片 文件上传前后台及阿里云存储数据流转过程 1.前端先访问后台接口获取上传阿里云存储权限相关信息和文件编号信 ...

  5. 文件存储解决方案-云存储阿里 OSS

    文件存储解决方案-云存储阿里 OSS 1.文件存储(上传)解决方案讨论 1.图解 文件存储解决方案-云存储阿里 OSS 解读上图 普通上传并不是分布式,也不是集群,可用性不高 普通上传的分布式情况,使 ...

  6. springboot 文件服务器_Spring Boot整合阿里OSS文件储存服务器详细教程

    一.准备工作 开发工具idea,jdk1.8,测试工具 postman 注册阿里云服务器并创建oss储存库, 创建Spring boot空项目 二. 引入pom.xml org.springframe ...

  7. 阿里OSS对象存储,实现图片上传进度显示ProgressListener;

    想了解阿里OSS对象存储,实现图片上传的内容的可看我的另一篇博客,博客中有完整代码,这篇博客是以上一篇阿里OSS对象存储博客为基础,只写一些与进度有关的内容,细心往下看js代码中有需要注意的地方! 实 ...

  8. 阿里OSS对象存储,实现图片上传代码;

    一.注册阿里云账号,购买OSS服务 获取 : 连接区域地址endpoint :需要存储的bucketName:图片保存路径picLocation :连接keyId:accessKeyId :连接秘钥a ...

  9. javaweb接入阿里oss

    [01]什么是阿里云 ? 这是阿里云的官网:https://www.aliyun.com (1.1)打开官网之后,就是这个样子的. [2]什么是阿里云OSS ? (2.2)下面红框是阿里云OSS的一个 ...

最新文章

  1. 网站优化时不容错过的时期有哪几个?
  2. 10 vm 添加串口_STM32的串口通信
  3. 许式伟:毕业两年成为首席架构师,我的技术学习方法论
  4. [蓝桥杯][算法提高VIP]分分钟的碎碎念(dfs)
  5. # javascript 总结
  6. Python3实现队列
  7. windows下JAVA环境变量配置
  8. 【链接】Eclipse中快速打开文件所在的文件夹位置
  9. k8s glusterfs mysql_k8s使用glusterfs实现动态持久化存储
  10. 程序员面试金典——9.4集合的子集
  11. python调用mt4_python mt4
  12. CAD批量提取数值lisp插件_CAD批量获取文本坐标及内容
  13. 学习记录:python糗百爬虫
  14. euht网络登录_基于EUHT技术的城轨高速线路车地无线网络解决方案
  15. 盛京剑客系列26:极简估值教程——第二讲历史估值的参考与运用
  16. 英文字母pc是什么意思,互联网的pc指的是什么
  17. 计算机竞赛 自主招生,2017年自主招生认可的竞赛汇总
  18. 吃鸡是python写的吗_用Python来P图,分析怎么吃鸡?只有想不到,没有做不到
  19. 颜色转换助手RGB888-565
  20. 忽尔今夏,SpringSide 3.0

热门文章

  1. Yoshua:深度学习AI迈向人类水平的挑战
  2. 校招选择题汇总【图形推理(2)】含答案解析
  3. android videoview 拉伸,手摸手带你用 VideoView 实现英语流利说炫酷引导页
  4. PDF格式打印不了怎么办?
  5. 高通AR9344 5.8GHz大功率无线户外CPE
  6. Android中间人攻击测试工具(原创) – Lanmitm
  7. 黑马——最新大数据视频
  8. 惠普服务器找不到阵列,HP服务器RAID设置方法介绍
  9. ruby如何开发接入短信发送预约挂号、医嘱、体检报告等短信demo示例
  10. 新版 Win 10 来了。网友:要被丑哭了……