为了提高大文件上传效率,OSS提供了两种大文件上传方法,分别是断点续传上传和分片上传。本文将概述这两种上传方法,并提供相关文档链接供进一步参考。
注意事项
传统的简单上传方法(如 PutObject
)上传大文件会遇到以下问题:
最大对象大小限制:OSS 对单个对象的大小有限制,超过5GB的文件无法通过简单的
PutObject
方法直接上传。尝试上传超过5GB的文件会导致操作失败。上传时间:上传大文件可能需要较长的时间,尤其是在较慢的网络连接下。长时间的传输容易受到网络波动的影响,可能导致传输中断或超时问题。
内存消耗:上传大文件可能导致内存消耗增加,特别是在使用较小的内存配置或受限的环境中,这会影响系统的稳定性和性能。
因此,在处理大文件上传时,推荐使用断点续传上传或分片上传方法,以提高上传效率和可靠性。
断点续传
断点续传上传是一种高效的大文件上传方法,特别适用于网络连接不稳定或文件大小超过5GB的情况。这种方法自动将文件分割成多个较小的分片,并进行并发上传,整个过程无需用户干预。如果上传过程中发生中断,可以从最后一次成功的上传位置继续,避免了重新上传整个文件,从而显著提高了上传效率和可靠性。
分片上传
分片上传是一种常用的大文件上传方法,用户需要先将大文件手动分割成多个分片,然后使用分片上传系列接口进行上传。与断点续传上传相比,分片上传提供了更高的灵活性,允许用户在上传过程中动态调整分片大小,并且可以在中途取消分片上传任务。这种方法适用于需要更精细化控制上传过程的场景。
方法比较
特性 | 断点续传上传 | 分片上传 |
适用场景 | 希望简单快速即可完成大文件上传任务,不关注具体细节的用户 | 需要精细化控制且有技术能力的用户 |
并发上传 | 支持 | 支持 |
断点续传 | 支持,可以从断点处继续上传 | 不直接支持断点续传 |
分片大小 | 需要预设分片大小 | 可以动态调整分片大小 |
可靠性 | 高,减少因网络波动导致的上传失败 | 较高,但仍需手动处理断点 |
管理难度 | 低,只需调用一个UploadFile上传函数 | 高,需要调用InitiateMultipartUpload, UploadPart, CompleteMultipartUpload等函数 |
灵活性 | 一般,不支持精细化控制上传流程 | 高,支持手动控制上传流程,便于实时监控分片上传的活动 |
开发便利性 | 极高,只需调用一个上传函数即可完成大文件的上传 | 较低,需要手动对大文件进行分片,编写更多的控制逻辑调用多个接口完成分片上传,并且需要处理各种异常情况 |