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

error()

@type error() ::
  %Aliyun.Oss.Client.Error{
    body: String.t(),
    parsed_details: map(),
    status_code: integer()
  }
  | atom()

Functions

abort_upload(config, bucket, object, upload_id)

@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"],
      ...
    }
  }
}

complete_upload(config, bucket, object, upload_id, parts, options \\ [])

@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"},
      ...
    ]
  }
}

init_upload(config, bucket, object, options \\ [])

@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"}

list_parts(config, bucket, object, upload_id, options \\ [])

@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"],
      ...
    }
  }
}

list_uploads(config, bucket, options \\ [])

@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"],
      ...
    }
  }
}

upload(config, bucket, object, parts)

@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"],
      ...
    }
  }
}

upload_part(config, bucket, object, upload_id, part_number, body)

@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"]
    }
  }
}