Android oss policy上传

news2024/10/7 15:23:42

OSS Policy方式上传

    • 一、 流程对比
      • 1.1 普通上传
      • 1.2 服务端签名后直传
    • 二、获取上传的policy签名配置
    • 三、请求OSS上传文件
    • 四、调用应用服务器接口同步文件
    • 五、关于上传OSS报错注意事项
    • 六、附送链接

一、 流程对比

1.1 普通上传

在这里插入图片描述
缺点:

  • 上传慢:用户数据需先上传到应用服务器,之后再上传到OSS。网络传输时间比直传到OSS多一倍。如果用户数据不通过应用服务器中转,而是直传到OSS,速度将大大提升。
  • 扩展性差:如果后续用户多了,应用服务器会成为瓶颈。
  • 费用高:需要准备多台应用服务器。由于OSS上传流量是免费的,如果数据直传到OSS,不通过应用服务器,那么将能省下几台应用服务器。

1.2 服务端签名后直传

在这里插入图片描述

好处:

  • Web端向服务端请求签名,然后直接上传,不会对服务端产生压力,而且安全可靠。
  • 但服务端无法实时了解用户上传了多少文件,上传了什么文件。如果想实时了解用户上传了什么文件,可以采用服务端签名直传并设置上传回调。
  • 但存在着恶意上传的风险,造成存储空间的浪费

二、获取上传的policy签名配置

根据你们后端提供的get或者post API 请求获取policy直传的签名
接口一般定义为get请求 :/api/Upload/getSignedUrl
后端返回信息:

{
"accessid":"LTAI5tBDFVar1hoq****",
"host":"http://post-test.oss-cn-hangzhou.aliyuncs.com",
"policy":"eyJleHBpcmF0aW9uIjoiMjAxNS0xMS0wNVQyMDoyMzoyM1oiLCJjxb25kaXRpb25zIjpbWyJjcb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDQ4NTc2MDAwXSxbInN0YXJ0cy13aXRoIiwiJGtleSIsInVzZXItZGlyXC8i****",
"signature":"VsxOcOudx******z93CLaXPz+4s=",
"expire":1446727949,
"dir":"user-dirs/"
}
字段描述
accessid用户请求的AccessKey ID。
host用户发送上传请求的域名。
policy用户表单上传的策略(Policy),Policy为经过Base64编码过的字符串。详情请参见Post Policy。
signature对Policy签名后的字符串。详情请参见Post Signature。
expire由服务器端指定的Policy过期时间,格式为Unix时间戳(自UTC时间1970年01月01号开始的秒数)。
dir限制上传的文件前缀。

注意:dir是你要上传到oss bucket下的子目录名称,也就是你要上传的文件在哪个目录下,这个目录可以自己指定,如果这样,就可以客户端get请求的时候携带给后端,这时,API就可以按照个人需求来修改了
get请求可以在url上携带dir名称,也可以用post请求,body的形式传递json给后端,更容易参数扩展

dir目录很重要,在下面的第三点的post请求上传oss的时候,需要传递一个键值对:
“key” : value(dir+文件名)

三、请求OSS上传文件

用户使用Post方法向OSS发送文件上传请求
把上一步请求后端返回给你的那些参数,通过post请求构造body,上传至oss服务器
请求的地址就是服务端返回的host字段:http://post-test.oss-cn-hangzhou.aliyuncs.com
参数就是下面的伪代码:

new_multipart_params = {
     // key表示上传到Bucket内的Object的完整路径,例如exampledir/exampleobject.txtObject,完整路径中不能包含Bucket名称。
     // filename表示待上传的本地文件名称。
     'key' : key + '${filename}',
     'policy': policyBase64,
     'OSSAccessKeyId': accessid,
     // 设置服务端返回状态码为200,不设置则默认返回状态码204。
     'success_action_status' : '200',    
     'signature': signature,
 };

注意:这里每一个参数都不能少,success_action_status不传也行,但是OSS默认会返回204状态码,指定200以后,会返回200

这里通过apiPost进行上传测试:
在这里插入图片描述
红框内是必传字段,我通过测试得出两个结论:
1.policy签名直传方式中,这个key一定要传递,指定好上面说的那个dir名称,否则会报错,类似policy策略失败问题
2.这种方式不会像我们正常post请求后端那样支持批量上传文件了,因为有key的限制
我尝试了多个file配置多个key,以失败告终

四、调用应用服务器接口同步文件

我们上传到OSS的文件,没设置callback的话,后端并不知道,有两种方法可以同步后端;
方案一:在请求OSS的时候,设置callback,估计oss上传完成会通知后端?
方案二:也是我现在项目做的方式,我们拿到OSS返回200以后,跟后端重新定义接口同步文件信息到后端

五、关于上传OSS报错注意事项

上传报错(返回400,403,405,204)

报错信息解决方案
204在formData: {}中添加 success_action_status:“200”
400添加上传的 Key 值,路径也要写正确,/images/test.png 为错误写法(最前面多了个斜杠),正确写法success images/test.png ;另外,阿里云OSS一次只允许上传一张照片。
403检测 OSSAccessKeyId,policy,signature 是否填写正确; expiration已过期
405URL中添加服务器地址 http://post-test.oss-cn-hangzhou.aliyuncs.com 而不能写成 http://post-test.oss-cn-hangzhou.aliyuncs.com/images/test.png这种形式

六、附送链接

阿里云服务端签名直传文档
https://help.aliyun.com/document_detail/31926.html?spm=a2c4g.31920.0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726742.html

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

相关文章

数学建模常用模型(五):多元回归模型

数学建模常用模型(五):多元回归模型 由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候,…

docker中运行RabbitMq的启用插件指南

我们使用 Docker 来运行 RabbitMQ,有时需要启用一些插件,这个与正常安装的启用插件的步骤会有所不同。以下是在 Docker 中启用 RabbitMQ 插件的一般步骤: 首先,确认已经将 rabbitmq_delayed_message_exchange-3.12.0.ez 插件文件复…

raid5两块磁盘掉线导致阵列崩溃的服务器数据恢复案例

服务器数据恢复环境: DELL PowerVault系列某型号存储,15块硬盘搭建了一组RAID5磁盘阵列。 服务器故障&检测: 存储设备raid5阵列中一块磁盘由于未知原因离线,管理员对该磁盘阵列进行了同步操作。在同步的过程中又有一块磁盘指示…

使用 hbuilderx 配置 MuMu模拟器进行调试

第一步 先安装MuMu模拟器,调成手机模式。 第二步 查看MuMu模拟器监听的端口。 在安装目录下 /vms/MuMuPlayer-12.0-0/MuMuPlayer-12.0-0 旧端口7555,新端口号16384 切换到安装目录下的 /shell,然后shift右击,打开 powershell&a…

【服务器数据恢复】raid5崩溃的redhat linux系统数据恢复案例

服务器数据恢复环境: 一台ibm某型号服务器,5块硬盘组建一组raid5磁盘阵列,redhat linux操作系统,上层部署有oracle数据库。 服务器故障: raid5阵列中两块硬盘离线,服务器崩溃。经过初检发现故障服务器中的…

基于SpringBoot的医护人员排班系统【附开题(bao告)和万字文档(Lun文)和搭建文档】

主要功能 前台登录: ①首页:医院信息展示、医护信息展示、排班信息展示、投诉信息展示 ②医院信息:名称查询、医院查看、医院简介、可以点赞、可以评论、点我收藏 ③医护信息:根据工号、姓名查询、点击查看医护信息、可以收藏 ④…

Simulink仿真模块 - Band-Limited White Noise

Band-Limited White Noise模块的功能是在连续系统中引入白噪声。它所在的库为: Simulink / Sources 如图所示: Band-Limited White Noise 模块生成适合在连续系统或混合系统中使用的正态分布随机数。 白噪声仿真 从理论上讲,连续白噪声的相关时间为 0,功率谱密度 …

飞利浦的护眼台灯好用吗?南卡/飞利浦/雷士对比测评,看看哪款更好用!

日常生活中,灯光对于我们重要性不用多说。不管是学习还是办公等环境都需要合适的光线,而台灯作为补充光线小型家电,基本每个家庭里都会备着一台,特别是对于长期使用电脑的上班族或者需要长时间学习的学生这类人员。但是台灯的种类…

【大数据技术】hive 窗口函数sum range between的详细介绍

【大数据技术】hive 窗口函数sum range between的详细介绍 数据准备 建表 create table range_test( name string, month int , sales int ) row format delimited fields terminated by "," ;插入数据 load data local inpath "/home/xx/test/1.t…

双击就能运行的Win95,流畅稳定还内置大型游戏

像咱这样的新时代互联网民工,上班面对 Win10/11 下班也还是一样,难免有时候觉得腻。 回味起当初的 Win7、Win8、Win XP ,不管当初受过什么伤,现在只有美好的回忆。 大家可能还想象过,用现在配置去运行老系统。 不知高…

uniapp 小程序 vue TypeError: Cannot read property ‘toString‘ of undefined

是因为对字符串使用toString的时候页面中的数据还没有加载 。错误代码: 可以使用 v-if 修改为:

AR是现实的商业创新,还是虚幻的电子梦境?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 在本期节目中,我们将深入探讨AVAR的创始人胡雅婷的创业故事。 我们从年轻人偏爱虚拟偶像和热衷元宇宙创业的社会话题出发&…

递归的深层次理解+初始搜索算法

1)什么是递归:就是函数自己调用自己的过程 2)为什么会使用到递归:主问题->相同的子问题,相同的子问题->一样相同的子问题 3)递归结束的条件:也就是细节和出口最小的不能在继续进行分割的子问题 4)宏观看待递归的过程: 1)不要在意递归展开的细节图 2)那递归的函…

全面分析MySQL?ERROR?1045出现的原因及解决

目录 通常从网上都能找到解决方案 1.停止服务2.跳过验证3.修改密码4.重启服务原因分析 SO 解决办法 在命令行输入mysql -u root –p,输入密码,或通过工具连接数据库时,经常出现下面的错误信息,相信该错误信息很多人在使用MySQL…

使用Kali Linux 暴力破解wifi密码详细步骤

使用Kali Linux 暴力破解wifi密码详细步骤所谓暴力破解就是穷举法,将密码字典中每一个密码依次去与握手包中的密码进行匹配,直到匹配成功。所以能否成功破解wifi密码取决于密码字典本身是否包含了这个密码。破解的时间取决于CPU的运算速度以及密码本身的…

信息安全-数据安全-数据安全平台建设实践

背景 在大数据时代,数据已经成为公司的核心竞争力。此前,我们介绍了美团酒旅起源数据治理平台的建设与实践,主要是通过各种数据分析挖掘手段,为公司发展决策和业务开展提供数据支持。 近期,业内数据安全事件频发&…

日本社交网络市场:Facebook 与本土巨头的竞争分析

摘要:Facebook作为全球最大的社交媒体平台之一,成功地击败了日本的本土社交网站,包括Mixi、DeNA和Gree等。 社交媒体在全球范围内迅速崛起,改变了人们的社交方式和信息传播方式。然而,在不同国家和地区,由于…

尚硅谷Docker实战教程-笔记08【高级篇,Docker复杂安装详说】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇,Docker理念简介、官网介绍、平台入门图解、平台架构图解】…

易基因: DNA甲基化差异水平分析中的DMC、DMR、DMG鉴定 | 干货分享

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 DNA甲基化(DNA methylation)为DNA化学修饰的一种形式,能够在不改变DNA序列的前提下,改变遗传表现。所谓DNA甲基化是指在DNA甲基化转移酶的…

跑深度学习nvidia驱动忽然实效的详细解决方法

由于经常跑深度学习,所以对于显卡驱动什么的都还是整的比较明白的不含糊,所以都能跑的起来。但是今天跑pytorch框架时(用到cuda)忽然给我报了个错: RuntimeError: No CUDA GPUs are available这给我整不会了&#xff…