经常碰到内部同学或者外部客户问ossutil关于大文件断点续传的问题。本文简单描述下原理并举例说明。
用户可从这里获取ossutil。
官网:https://help.aliyun.com/document_detail/50452.html
代码:https://github.com/aliyun/ossutil
OSS断点续传
应用场景
当调用OSS的PutObject来上传较大的文件时,如果上传过程中出现错误,比如网络错误,那么此次上传失败。重试时必须从文件起始位置上传。
针对这种情况,OSS提供了分片上传(Multipart Upload)来达到断点续传的效果。分片上传就是将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object。
因此,OSS断点续传适用于以下场合。
- 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。
- 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。
详细信息,请参考https://help.aliyun.com/document_detail/31850.html。
实现原理
在分片上传的过程中,已经上传的Part的生命周期是永久的,因此很容易可以实现断点续传的功能。