Aliyun.Oss.Object.MultipartUpload (aliyun_oss v1.0.0)
Multipart Upload
使用 Multipart Upload 模式上传数据
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("some-bucket", "some-object", 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"},
...
]
}
}
Link to this section Summary
Functions
AbortMultipartUpload 用于终止 MultipartUpload 事件。您需要提供 MultipartUpload 事件相应的 Upload ID。
CompleteMultiUpload 在将所有数据 Part 都上传完成后,必须调用 CompleteMultipartUpload 接口来完成整个文件的 MultipartUpload。
InitiateMultipartUpload 初始化一个 Multipart Upload 事件
ListParts 用于列举指定 Upload ID 所属的所有已经上传成功 Part。
ListMultipartUploads 来列举所有执行中的 Multipart Upload 事件,即已经初始化但还未 Complete 或者 Abort 的 Multipart Upload 事件。
使用 Multipart Upload 上传数据
UploadPart 初始化一个 MultipartUpload 之后,可以根据指定的 Object 名和 Upload ID 来分块(Part)上传数据。
UploadPartCopy 通过从一个已存在的 Object 中拷贝数据来上传一个 Part。
Link to this section Types
error()
Specs
Link to this section Functions
abort_upload(bucket, object, upload_id)
Specs
abort_upload(String.t(), String.t(), String.t()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
AbortMultipartUpload 用于终止 MultipartUpload 事件。您需要提供 MultipartUpload 事件相应的 Upload ID。
Examples
iex> Aliyun.Oss.Object.MultipartUpload.abort_upload("some-bucket", "some-object", "UPLOAD_ID")
{:ok, %Aliyun.Oss.Client.Response{
data: "",
headers: [
{"Server", "AliyunOSS"},
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
complete_upload(bucket, object, upload_id, parts, headers \\ %{})
Specs
complete_upload( String.t(), String.t(), String.t(), [{integer(), String.t()}], map() ) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
CompleteMultiUpload 在将所有数据 Part 都上传完成后,必须调用 CompleteMultipartUpload 接口来完成整个文件的 MultipartUpload。
Examples
iex> uploaded_parts = [{1, "ETAG_FOR_PART1}, {2, "ETAG_FOR_PART2}]
iex> Aliyun.Oss.Object.MultipartUpload.complete_upload("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"},
...
]
}
}
init_upload(bucket, object, headers \\ %{}, opts \\ [])
Specs
init_upload(String.t(), String.t(), map(), [{:encoding_type, :url}]) :: {:error, error()} | {:ok, String.t()}
InitiateMultipartUpload 初始化一个 Multipart Upload 事件
Options
:encoding_type
- default is blank, accept value::url
Examples
iex> Aliyun.Oss.Object.MultipartUpload.init_upload("some-bucket", "some-object")
{:ok, "UPLOAD_ID"}
list_parts(bucket, object, upload_id, query_params \\ %{})
Specs
list_parts(String.t(), String.t(), String.t(), map()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
ListParts 用于列举指定 Upload ID 所属的所有已经上传成功 Part。
Examples
iex> Aliyun.Oss.Object.MultipartUpload.list_parts("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: [
{"Server", "AliyunOSS"},
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
list_uploads(bucket, query_params \\ %{})
Specs
ListMultipartUploads 来列举所有执行中的 Multipart Upload 事件,即已经初始化但还未 Complete 或者 Abort 的 Multipart Upload 事件。
Examples
iex> Aliyun.Oss.Object.MultipartUpload.list_uploads("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-object",
"StorageClass" => "Standard",
"UploadId" => "UPLOAD_ID"
},
%{
"Initiated" => "2018-05-14T07:59:10.000Z",
"Key" => "some-object",
"StorageClass" => "Standard",
"UploadId" => "UPLOAD_ID"
}
],
"UploadIdMarker" => nil
}
},
headers: [
{"Server", "AliyunOSS"},
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
upload(bucket, object, parts)
Specs
upload(String.t(), String.t(), Enum.t()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
使用 Multipart Upload 上传数据
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("some-bucket", "some-object", 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"},
...
]
}
}
upload_part(bucket, object, upload_id, part_number, body)
Specs
upload_part(String.t(), String.t(), String.t(), integer(), String.t()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
UploadPart 初始化一个 MultipartUpload 之后,可以根据指定的 Object 名和 Upload ID 来分块(Part)上传数据。
Examples
iex> Aliyun.Oss.Object.MultipartUpload.upload_part("some-bucket", "some-object", "UPLOAD_ID", 1, "CONTENT")
{:ok, %Aliyun.Oss.Client.Response{
data: "",
headers: [
{"Server", "AliyunOSS"},
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
upload_part_copy(bucket, object, upload_id, part_number, copy_source, copy_source_range \\ "", headers \\ %{})
UploadPartCopy 通过从一个已存在的 Object 中拷贝数据来上传一个 Part。
Examples
iex> Aliyun.Oss.Object.MultipartUpload.upload_part_copy("some-bucket", "some-object", "UPLOAD_ID", 1, "/SourceBucketName/SourceObjectName")
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"CopyPartResult" => %{
"ETag" => ""09800000000000000000000000000000"",
"LastModified" => "2017-05-14T07:44:26.000Z"
}
},
headers: [
{"Server", "AliyunOSS"},
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}