441
人物
追加上传__上传文件_开发人员指南_对象存储 OSS-阿里云
适用场景
之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。
正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点:
- 软件架构比较复杂,需要考虑文件分块等细节问题。
- 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。
- 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。
为了简化这种场景下的开发成本,OSS提供了用户通过追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。
如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。
不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。
上传限制
- 大小限制:在这种上传方式下,Object不能超过5GB。
- 命名限制
- 使用UTF-8编码
- 长度必须在1-1023字节之间
- 不能以“/”或者“”字符开头
- 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。
- 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。
上传的安全及授权
为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。
上传后续操作
如果上传的是图片需要处理,可以使用上传图片后云端处理。如果上传的是音频或者视频文件也可以使用媒体转码。
功能使用参考
- API:Append Object
- SDK:Java SDK-追加文件示例
注意: 追加上传不支持上传回调操作。
最佳实践
相关参考链接
最后更新:2016-11-23 16:04:09
上一篇:
断点续传上传__上传文件_开发人员指南_对象存储 OSS-阿里云
下一篇:
上传回调__上传文件_开发人员指南_对象存储 OSS-阿里云
系统限制__产品使用手册_开放搜索-阿里云
更新编排模板__镜像与模板管理_用户指南_容器服务-阿里云
域名状态信息__数据类型_API文档_域名-阿里云
做世界云计算的“两极”,阿里云如何跨过“企业关”
如何跨项目配置任务依赖__用户常见问题反馈_常见问题_大数据开发套件-阿里云
经典网络专线接入__使用金融云产品_金融云-阿里云
AppendObject__关于Object操作_API 参考_对象存储 OSS-阿里云
修改数据库参数列表__参数管理_API 参考_云数据库 RDS 版-阿里云
iOS推送证书设置__iOS SDK手册_App SDK 手册_移动推送-阿里云
搜索指定 Topic 详细信息__Topic 相关接口_Open API_消息队列 MQ-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云