https://www.aliyun.com/price/product?spm=5176.7933691.201230.3.D0q7SN#/oss/detail
https://help.aliyun.com/document_detail/31848.html?spm=5176.7933691.203455.5.D0q7SN
https://help.aliyun.com/document_detail/31839.html?spm=5176.doc31848.2.14.JOMsno
基于OSS的移动开发
开发架构图
典型的基于OSS的移动开发有四个组件
- OSS:提供上传,下载,上传回调等功能。
- 开发者的移动客户端(App或者网页应用),简称客户端:通过开发者提供的服务,间接使用OSS。
- 应用服务器:客户端交互的服务器。也是开发者的业务服务器。
- 阿里云STS:颁发临时凭证。
最佳实践:
开发业务流程
临时凭证授权的上传
如图所示:
- 客户端向应用服务器发出上传文件到OSS的请求。
- 应用服务器需要向STS服务器请求一次,获取临时凭证。
- 应用服务器回复客户端,将临时凭证返回给客户端。
- 客户端获取上传到OSS的授权(STS的AccessKey以及Token),调用OSS提供的移动端SDK上传。
- 客户端成功上传数据到OSS。如果没有设置回调,则流程结束。如果设置了回调功能,OSS会调用相关的接口。
这里有几个要点:
- 客户端不需要每次都向应用服务器请求授权,在第一次授权完成之后可以缓存STS返回的临时凭证直到超过失效时间。
- STS提供了强大的权限控制功能,可以将客户端的访问权限限制到Object级别,从而可以实现不同客户端在OSS端上传的Object的完全隔离,极大的提高了安全系数。
更多阅读授权给第三方上传
签名URL授权的上传和表单上传
如图所示:
- 客户端向应用服务器发出上传文件到OSS的请求。
- 应用服务器回复客户端,将上传凭证(签名URL或者表单)返回给客户端。
- 客户端获取上传到OSS的授权(签名URL或者表单),调用OSS提供的移动端SDK上传或者直接表单上传。
- 客户端成功上传数据到OSS。如果没有设置回调,则流程结束。如果设置了回调功能,OSS会调用相关的接口。
更多阅读授权给第三方上传
临时凭证授权的下载
跟临时凭证授权的上传过程类似:
- 客户端向应用服务器发出下载OSS文件的请求。
- 应用服务器需要向STS服务器请求一次,获取临时凭证。
- 应用服务器回复客户端,将临时凭证返回给客户端。
- 客户端获取下载OSS文件的授权(STS的AccessKey以及Token),调用OSS提供的移动端SDK下载。
- 客户端成功从OSS下载文件。
这里有几个要点:
- 和上传类似,客户端对于临时凭证也可以进行缓存从而提高访问速度。
- STS同样也提供了精确到Object的下载权限控制,和上传权限控制结合在一起可以实现各移动端在OSS上存储空间的完全隔离。
签名URL授权的下载
跟签名URL授权的上传类似:
- 客户端向应用服务器发出下载OSS文件的请求。
- 应用服务器回复客户端,将签名URL返回给客户端。
- 客户端获取下载OSS文件的授权(签名URL),调用OSS提供的移动端SDK下载。
- 客户端成功从OSS下载文件。
特别注意
- 客户端不能存储开发者的AccessKey,只能获取应用服务器签名的URL或者是通过STS颁发的临时凭证(也就是STS的AccessKey和Token)。
最佳实践
功能使用参考:
简单上传
适用场景
简单上传指的是用户使用OSS API中的Put Object方法上传单个Object,可以适用在任何一次HTTP请求交互即可完成上传的场景,比如小文件的上传。
上传文件时设置Object Meta
在使用简单上传的情况下,可以携带Object Meta信息对Object进行描述,比如可以设定Content-Type等标准HTTP头,也可以设定自定义信息。具体请参考Object Meta。
上传限制
- 大小限制:在这种上传方式下,Object的大小是有限制的,不能超过5GB。
- 命名限制
- 使用UTF-8编码
- 长度必须在1-1023字节之间
- 不能以“/”或者“\”字符开头
大文件上传
因为使用的是单次HTTP请求,Object过大会导致上传时间长。在这段时间出现网络原因造成超时或者链接断开等错误的时候,上传容易失败,可以考虑断点续传上传(分片上传)。当Object大于5GB,这种情况下只能使用断点续传上传(分片上传),具体参考断点续传上传。
上传的安全及授权
为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。 为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。
上传后续操作
在文件上传到OSS上后,开发者可以使用上传后回调来向指定的应用服务器发起回调请求,进行下一步操作。 如果上传的是图片需要处理,可以使用上传图片后云端处理。 如果上传的是音频或者视频文件也可以使用媒体转码。