287
阿里云
断点续传上传__上传文件_开发人员指南_对象存储 OSS-阿里云
适用场景
当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败。重试必须从文件起始位置上传。针对这种情况,OSS提供了分片上传(Multipart Upload)来达到断点续传的效果。顾名思义,分片上传就是将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object。
相对于其他的上传方式,分片上传适用于以下场景:
- 恶劣的网络环境。如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。
- 断点续传。中途暂停之后,可以从上次上传完成的Part的位置继续上传。
- 加速上传。要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。
- 流式上传。可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。
基本流程
一般的流程如下:
- 将要上传的文件按照一定的大小分片。
- 初始化一个分片上传任务(InitiateMultipartUpload)。
- 逐个或并行上传分片(UploadPart)。
- 完成上传(CompleteMultipartUpload)。
在这个过程中有些要注意的地方:
- 除了最后一块Part,其他Part的大小不能小于100KB,否则会导致在调用CompleteMultipartUpload接口的时候失败。
- 要上传的文件切分成Part之后,文件顺序是通过上传过程中指定的partNumber来确定的,实际执行中并没有顺序要求,因此可以实现并发上传。具体的并发个数并不是越多速度越快,要结合用户自身的网络情况和设备负载综合考虑。
- 默认情况下,已经上传但还没有调用CompleteMultipartUpload的Part是不会自动回收的,因此如果要终止上传并删除占用的空间请调用AbortMultipartUpload。如果需要自动回收上传的Part,请参考Object生命周期管理。
断点续传
因为已经上传的Part的生命周期是永久的,因此很容易可以实现断点续传的功能。
在使用分片上传的过程中,如果系统意外崩溃,可以在重启的时候通过ListMultipartUploads和ListParts两个接口来获取某个Object上的所有的分片上传任务和每个分片上传任务中上传成功的Part列表。通过这样就可以从最后一块成功上传的Part开始继续上传,从而达到断点续传的效果。暂停和恢复上传实现原理也是一样的。
断点续传功能在移动设备和大文件上传中尤其有价值。
上传限制
- 大小限制:在这种上传方式下,Object的大小是由Part来决定的。最大支持10000块Part,每块最小100KB(最后一块可以比100KB小),最大5GB。
- 命名限制
- 使用UTF-8编码
- 长度必须在1-1023字节之间
- 不能以“/”或者“”字符开头
上传的安全及授权
为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。
上传后续操作
- 在文件上传到OSS上后,开发者可以使用上传后回调来向指定的应用服务器发起回调请求,进行下一步操作。
- 如果上传的是图片,可以使用图片服务进行后续处理。
- 如果上传的是音频或者视频文件,可以使用媒体转码进行后续处理。
功能使用参考:
- API:
- SDK:Java SDK-MultipartUpload 中的分片上传
最佳实践
相关参考链接:
最后更新:2016-11-23 16:04:09
上一篇:
表单上传__上传文件_开发人员指南_对象存储 OSS-阿里云
下一篇:
追加上传__上传文件_开发人员指南_对象存储 OSS-阿里云
Job(作业)__产品概念_产品简介_数据集成-阿里云
API对接__用户指南_推荐引擎-阿里云
接口说明__API使用手册_归档存储-阿里云
弹性Web托管如何上传网站程序?__产品相关问题_使用问题_弹性 Web 托管-阿里云
资源操作__常用命令_基本介绍_大数据计算服务-阿里云
SQL 与 NoSQL 的对比__从 SQL 到 NoSQL_快速入门_表格存储-阿里云
技术架构__产品简介_业务实时监控服务 ARMS-阿里云
创建数据库与表__快速入门_云数据库 PetaData-阿里云
Taskitem数据类型__数据类型_API 手册_CDN-阿里云
Logtail-配置__Getting-Started_日志服务-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云