阿里云用STS上传oss的完整程序执行流程图 和前端需要哪些参数uniapp

embedded/2024/10/25 5:58:37/

H5 微信小程序可用的前端直传阿里云OSS(STS临时凭证+前端签名)直接下载插件

下面是原理说明:
在这里插入图片描述

明白了,我来详细说明前端上传文件到阿里云OSS需要携带的具体参数:

  1. 从服务器获取的 STS 凭证:
    在这里插入图片描述
javascript">// 这些参数需要从你的后端服务器获取
{accessKeyId: "STS.xxxx",     // STS临时访问密钥IDaccessKeySecret: "yyyy",      // STS临时访问密钥SecretsecurityToken: "zzzz",       // STS安全令牌expiration: "2024-10-24T12:00:00Z"  // 过期时间
}
  1. 上传文件时实际发送给阿里云的表单数据:
javascript">formData: {// 必须参数'key': 'uploads/example.jpg',           // 文件存储的路径+名称'OSSAccessKeyId': 'STS.xxxx',          // STS临时访问密钥ID'policy': 'xxxxxx',                     // Base64编码的策略文本'signature': 'yyyy',                    // 签名字符串'x-oss-security-token': 'zzzz',        // STS安全令牌// 可选参数'success_action_status': '200',         // 上传成功后的返回码'Content-Type': 'image/jpeg',           // 文件类型'x-oss-meta-uuid': 'uuid',             // 自定义元信息前缀
}

实际调用示例:

javascript">constructor(config) {// 设置 OSS 服务的 URLthis.url = config.url || 'https://yanyuguodu.oss-cn-beijing.aliyuncs.com/';// 设置访问密钥 IDthis.accessKeyId = config.accessKeyId || '';// 设置访问密钥 Secretthis.accessKeySecret = config.accessKeySecret || '';// 设置安全令牌this.securityToken = config.securityToken || '';// 定义策略文本const policyText = {"expiration": config.expiration, // 策略过期时间"conditions": [["content-length-range", 0, 1048576000] // 文件大小限制]}// 对策略文本进行 Base64 编码this.policy = Base64.encode(JSON.stringify(policyText));}// 定义异步方法 ossUpload,用于上传文件async ossUpload(filePath, name, dir) {// 生成文件的完整路径// const key = dir + this.random_string(10) + this.get_suffix(name);const key = dir + name;// 生成签名const bytes = HMAC(SHA1, this.policy, this.accessKeySecret, { asBytes: true });const signature = util.bytesToBase64(bytes);// 返回一个 Promise 对象return new Promise((resolve, reject) => {// 使用 uni.uploadFile 方法上传文件uni.uploadFile({url: this.url, // 上传地址filePath: filePath, // 文件路径name: 'file', // 文件字段名formData: {name, // 文件名key, // 文件路径policy: this.policy, // 策略// 作用:指定上传的条件和限制// 包含:// - 过期时间 expiration// - 文件大小限制 content-length-range// - 允许的文件类型// - 其他限制条件//下面是必填参数OSSAccessKeyId: this.accessKeyId, // 访问密钥 IDsuccess_action_status: '200', // 成功状态码signature, // 签名'x-oss-security-token': this.securityToken // 安全令牌},// 上传成功的回调函数success: () => {resolve({ success: true, data: this.url + key });},// 上传失败的回调函数fail: () => {reject({ success: false, data: '上传失败' });}});});}

在这里插入图片描述


http://www.ppmy.cn/embedded/132257.html

相关文章

从0开始学python-day14-pandas1

一、基础 1、概述 Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来 Pandas 名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)…

10.22.2024刷华为OD C题型(三)--for循环例子

脚踝动了手术,现在宾馆恢复,伤筋动骨一百天还真不是说笑的,继续努力吧。 文章目录 靠谱的车灰度图恢复灰度图恢复 -- for循环使用例子 靠谱的车 https://www.nowcoder.com/discuss/564514429228834816 这个题目思路不难,就是要自…

k8s 部署 emqx

安装cert-manager 使用Helm安装 helm repo add jetstack https://charts.jetstack.io helm repo update helm upgrade --install cert-manager jetstack/cert-manager \--namespace cert-manager \--create-namespace \--set installCRDstrue如果通过helm命令安装失败&#x…

gitlab不同账号间·仓库转移

背景:公司业务调整,原先在海外仓库的代码转移回国内 诉求:完整的保留项目记录 操作: 步骤一: 定位到需要迁移的原项目地址 步骤二:创建新项目 步骤三:打开命令行,创建好文件路径为需要clo…

docker 镜像详解

Docker镜像是一种轻量级、可移植的软件打包格式,它包含了运行应用程序所需的一切,是构建和分发应用程序的基础。以下是对Docker镜像的详细解释: 一、镜像的定义 镜像本质上是一个只读文件,包含了文件系统、源码、库文件、依赖、…

Page Cache(页缓存)的大小如何确定

Page Cache(页缓存)的大小是由多个因素共同决定的,以下是一些关键因素: 一、系统物理内存大小 Page Cache位于内存和磁盘之间,它利用系统内存来缓存磁盘数据。因此,系统物理内存的大小是决定Page Cache大…

Sql执行较慢的排查方式

SQL执行较慢的排查方式涉及多个方面,包括检查SQL语句本身、数据库配置、硬件资源等。以下是一些具体的排查步骤和优化建议: 一、检查SQL语句 启用慢查询日志: 大多数数据库管理系统(如MySQL、PostgreSQL)都支持慢查询…

opencv深度学习:面部特征点匹配与图像融合--换脸

原理 通过使用深度学习库Dlib和计算机视觉库OpenCV,实现两幅人脸图像的特征点检测、特征点匹配、图像融合,以及颜色归一化。通过这个过程,我们能够将一张人脸图像的特征(如表情、发型)无缝地融合到另一张人脸图像上。…