Aliyun.Oss.Object.MultipartUpload (aliyun_oss v3.1.2)
Object operations - Multipart Upload.
Summary
Functions
AbortMultipartUpload - cancels a multipart upload task and deletes the parts uploaded in the task.
CompleteMultiUpload - completes the multipart upload task of an object after all parts of the object are uploaded.
InitiateMultipartUpload - notifies OSS to initiate a multipart upload task before you perform multipart upload to upload data.
ListParts - Lists all parts that are uploaded by using a specified upload ID.
ListMultipartUploads - lists all multipart upload tasks in progress.
A shortcut for uploading streaming data.
UploadPart - uploads data by part based on the specified object name and upload ID after you initiate a multipart upload operation.
UploadPartCopy - copies data from an existing object to upload a part by adding a x-oss-copy-request
header to UploadPart.
Types
Functions
@spec abort_upload(Aliyun.Oss.Config.t(), String.t(), String.t(), String.t()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
AbortMultipartUpload - cancels a multipart upload task and deletes the parts uploaded in the task.
Examples
iex> Aliyun.Oss.Object.MultipartUpload.abort_upload(config, "some-bucket", "some-object", "UPLOAD_ID")
{:ok, %Aliyun.Oss.Client.Response{
data: "",
headers: %{
"connection" => ["keep-alive"],
...
}
}
}
@spec complete_upload( Aliyun.Oss.Config.t(), String.t(), String.t(), String.t(), [{integer(), String.t()}], keyword() ) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
CompleteMultiUpload - completes the multipart upload task of an object after all parts of the object are uploaded.
Options
:headers
- Defaults to%{}
:encoding_type
- Default is blank, accept value::url
Examples
iex> uploaded_parts = [{1, "ETAG_FOR_PART1}, {2, "ETAG_FOR_PART2}]
iex> Aliyun.Oss.Object.MultipartUpload.complete_upload(config, "some-bucket", "some-object", "UPLOAD_ID", uploaded_parts)
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"CompleteMultipartUploadResult" => %{
"Bucket" => "some-bucket",
"ETag" => ""21000000000000000000000000000000-1"",
"Key" => "some-object",
"Location" => "https://some-bucket.oss-cn-shenzhen.aliyuncs.com/some-object"
}
},
headers: [
{"Server", "AliyunOSS"},
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
@spec init_upload(Aliyun.Oss.Config.t(), String.t(), String.t(), keyword()) :: {:error, error()} | {:ok, String.t()}
InitiateMultipartUpload - notifies OSS to initiate a multipart upload task before you perform multipart upload to upload data.
Options
:headers
- Defaults to%{}
:encoding_type
- Default is blank, accept value::url
Examples
iex> Aliyun.Oss.Object.MultipartUpload.init_upload(config, "some-bucket", "some-object")
{:ok, "UPLOAD_ID"}
@spec list_parts(Aliyun.Oss.Config.t(), String.t(), String.t(), String.t(), keyword()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
ListParts - Lists all parts that are uploaded by using a specified upload ID.
Options
:query_params
- Defaults to%{}
Examples
iex> Aliyun.Oss.Object.MultipartUpload.list_parts(config, "some-bucket", "some-object", "UPLOAD_ID")
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"ListPartsResult" => %{
"Bucket" => "some-bucket",
"IsTruncated" => false,
"Key" => "some-object",
"MaxParts" => "1000",
"NextPartNumberMarker" => "2",
"Part" => [
%{
"ETag" => ""09000000000000000000000000000000"",
"HashCrc64ecma" => "15248619871383844432",
"LastModified" => "2018-05-14T08:03:26.000Z",
"PartNumber" => "1",
"Size" => "1538"
},
%{
"ETag" => ""2A000000000000000000000000000000"",
"HashCrc64ecma" => "13658734736388254586",
"LastModified" => "2018-05-14T08:03:37.000Z",
"PartNumber" => "2",
"Size" => "18"
}
],
"PartNumberMarker" => "0",
"StorageClass" => "Standard",
"UploadId" => "UPLOAD_ID"
}
},
headers: %{
"connection" => ["keep-alive"],
...
}
}
}
@spec list_uploads(Aliyun.Oss.Config.t(), String.t(), keyword()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
ListMultipartUploads - lists all multipart upload tasks in progress.
The result includes the tasks are not completed or canceled.
Options
:query_params
- Defaults to%{}
Examples
iex> Aliyun.Oss.Object.MultipartUpload.list_uploads(config, "some-bucket")
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"ListMultipartUploadsResult" => %{
"Bucket" => "some-bucket",
"Delimiter" => nil,
"IsTruncated" => false,
"KeyMarker" => nil,
"MaxUploads" => "1000",
"NextKeyMarker" => nil,
"NextUploadIdMarker" => nil,
"Prefix" => nil,
"Upload" => [
%{
"Initiated" => "2018-05-14T07:59:10.000Z",
"Key" => "some-object1",
"StorageClass" => "Standard",
"UploadId" => "UPLOAD_ID1"
},
%{
"Initiated" => "2018-05-14T07:59:50.000Z",
"Key" => "some-object2",
"StorageClass" => "Standard",
"UploadId" => "UPLOAD_ID2"
}
],
"UploadIdMarker" => nil
}
},
headers: %{
"connection" => ["keep-alive"],
...
}
}
}
@spec upload(Aliyun.Oss.Config.t(), String.t(), String.t(), Enum.t()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
A shortcut for uploading streaming data.
Examples
iex> part_bytes = 102400 # The minimum allowed size is 100KB.
iex> parts = File.stream!("/path/to/file", [], part_bytes)
iex> Aliyun.Oss.Object.MultipartUpload.upload(config, "some-bucket", "some-object", parts)
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"CompleteMultipartUploadResult" => %{
"Bucket" => "some-bucket",
"ETag" => ""21******************************-1"",
"Key" => "some-object",
"Location" => "https://some-bucket.oss-cn-shenzhen.aliyuncs.com/some-object"
}
},
headers: %{
"connection" => ["keep-alive"],
...
}
}
}
@spec upload_part( Aliyun.Oss.Config.t(), String.t(), String.t(), String.t(), integer(), String.t() ) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
UploadPart - uploads data by part based on the specified object name and upload ID after you initiate a multipart upload operation.
Examples
iex> Aliyun.Oss.Object.MultipartUpload.upload_part(config, "some-bucket", "some-object", "UPLOAD_ID", 1, "CONTENT")
{:ok, %Aliyun.Oss.Client.Response{
data: "",
headers: %{
"connection" => ["keep-alive"],
...
}
}
}
upload_part_copy(config, bucket, object, upload_id, part_number, copy_source, copy_source_range \\ "", options \\ [])
@spec upload_part_copy( Aliyun.Oss.Config.t(), String.t(), String.t(), String.t(), integer(), String.t(), String.t(), keyword() ) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
UploadPartCopy - copies data from an existing object to upload a part by adding a x-oss-copy-request
header to UploadPart.
Options
:headers
- Defaults to%{}
Examples
iex> Aliyun.Oss.Object.MultipartUpload.upload_part_copy(config, "some-bucket", "some-object", "UPLOAD_ID", 1, "/SourceBucketName/SourceObjectName")
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"CopyPartResult" => %{
"ETag" => ""098*****************************"",
"LastModified" => "2017-05-14T07:44:26.000Z"
}
},
headers: %{
"connection" => ["keep-alive"],
"content-type" => ["application/xml"],
"date" => ["Mon, 21 Jul 2025 07:02:21 GMT"],
"etag" => [""A65C****************************""],
"server" => ["AliyunOSS"],
"x-oss-copied-size" => ["20"],
"x-oss-hash-crc64ecma" => ["162113**************"],
"x-oss-ia-retrieve-flow-type" => ["0"],
"x-oss-request-id" => ["687DE*******************"],
"x-oss-server-time" => ["125"]
}
}
}