LibOss.Core.Multipart (lib_oss v0.3.0)
View Source分片上传模块
负责:
- 初始化:init_multi_upload
 - 上传分片:upload_part
 - 列表操作:list_multipart_uploads, list_parts
 - 完成/中止:complete_multipart_upload, abort_multipart_upload
 
Summary
Types
@type err_t() :: {:error, LibOss.Exception.t()}
Functions
@spec abort_multipart_upload( module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.upload_id() ) :: :ok | err_t()
中止分片上传
参数
- name: Agent进程名称
 - bucket: 存储桶名称
 - object: 对象名称
 - upload_id: 上传ID
 
返回值
:ok | {:error, Exception.t()}
示例
iex> LibOss.Core.Multipart.abort_multipart_upload(MyOss, "my-bucket", "large-file.zip", "upload-id-123456")
:ok相关文档
@spec calculate_part_count(non_neg_integer(), non_neg_integer()) :: non_neg_integer()
计算文件分片数量
参数
- file_size: 文件大小(字节)
 - part_size: 分片大小(字节,可选,默认5MB)
 
返回值
- non_neg_integer()
 
示例
iex> LibOss.Core.Multipart.calculate_part_count(100 * 1024 * 1024)
20
  @spec complete_multipart_upload( module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.upload_id(), [{LibOss.Typespecs.part_num(), LibOss.Typespecs.etag()}], LibOss.Typespecs.headers() ) :: :ok | err_t()
完成分片上传
参数
- name: Agent进程名称
 - bucket: 存储桶名称
 - object: 对象名称
 - upload_id: 上传ID
 - parts: 分片列表,格式为 [{part_number, etag}, ...]
 - headers: 可选的HTTP请求头
 
返回值
:ok | {:error, Exception.t()}
示例
iex> parts = [{1, ""etag1""}, {2, ""etag2""}]
iex> LibOss.Core.Multipart.complete_multipart_upload(MyOss, "my-bucket", "large-file.zip", "upload-id-123456", parts)
:ok相关文档
@spec init_multi_upload( module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.headers() ) :: {:ok, LibOss.Typespecs.upload_id()} | err_t()
初始化分片上传
参数
- name: Agent进程名称
 - bucket: 存储桶名称
 - object: 对象名称
 - req_headers: 可选的HTTP请求头
 
返回值
| {:error, Exception.t()}
示例
iex> LibOss.Core.Multipart.init_multi_upload(MyOss, "my-bucket", "large-file.zip")
{:ok, "upload-id-123456"}相关文档
@spec list_multipart_uploads( module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.params() ) :: {:ok, map()} | err_t()
列出分片上传任务
参数
- name: Agent进程名称
 - bucket: 存储桶名称
 - query_params: 查询参数
 
查询参数
- key-marker: 起始对象名
 - upload-id-marker: 起始上传ID
 - max-uploads: 最大返回数量
 
返回值
| {:error, Exception.t()}
示例
iex> LibOss.Core.Multipart.list_multipart_uploads(MyOss, "my-bucket", %{"max-uploads" => "100"})
{:ok, %{uploads: [...], is_truncated: false}}相关文档
@spec list_parts( module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.upload_id(), LibOss.Typespecs.params() ) :: {:ok, map()} | err_t()
列出已上传的分片
参数
- name: Agent进程名称
 - bucket: 存储桶名称
 - object: 对象名称
 - upload_id: 上传ID
 - query_params: 查询参数(可选)
 
查询参数
- part-number-marker: 起始分片号
 - max-parts: 最大返回数量
 
返回值
| {:error, Exception.t()}
示例
iex> LibOss.Core.Multipart.list_parts(MyOss, "my-bucket", "large-file.zip", "upload-id-123456")
{:ok, %{parts: [...], is_truncated: false}}相关文档
@spec multipart_limits() :: map()
获取分片上传限制信息
返回值
- map()
 
示例
iex> LibOss.Core.Multipart.multipart_limits()
%{
  min_part_size: 5242880,
  max_part_size: 5368709120,
  max_parts: 10000
}
  @spec recommended_part_size(non_neg_integer()) :: non_neg_integer()
获取推荐的分片大小
参数
- file_size: 文件大小(字节)
 
返回值
- non_neg_integer()
 
根据文件大小自动计算合适的分片大小,确保分片数量不超过10000个
示例
iex> LibOss.Core.Multipart.recommended_part_size(1024 * 1024 * 1024)
5242880
  @spec upload_part( module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.upload_id(), LibOss.Typespecs.part_num(), binary() ) :: {:ok, binary()} | err_t()
上传分片
参数
- name: Agent进程名称
 - bucket: 存储桶名称
 - object: 对象名称
 - upload_id: 上传ID
 - part_number: 分片号(1-10000)
 - data: 分片数据
 
返回值
| {:error, Exception.t()}
分片限制
- 分片号范围:1-10000
 - 分片大小:5MB-5GB(最后一个分片可以小于5MB)
 
示例
iex> LibOss.Core.Multipart.upload_part(MyOss, "my-bucket", "large-file.zip", "upload-id-123456", 1, data)
{:ok, ""etag-value""}相关文档
@spec validate_multipart_params(non_neg_integer(), non_neg_integer()) :: :ok | err_t()
验证分片上传参数
参数
- file_size: 文件大小
 - part_size: 分片大小
 
返回值
:ok | {:error, Exception.t()}