Aliyun.Oss.Object.MultipartUpload (aliyun_oss v2.0.0)

Object operations - Multipart Upload.

Link to this section 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.

Link to this section Types

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

Link to this section Functions

Link to this function

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

Examples

iex> Aliyun.Oss.Object.MultipartUpload.abort_upload(config, "some-bucket", "some-object", "UPLOAD_ID")
{:ok, %Aliyun.Oss.Client.Response{
    data: "",
    headers: [
      {"Server", "AliyunOSS"},
      {"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
      ...
    ]
  }
}
Link to this function

complete_upload(config, bucket, object, upload_id, parts, headers \\ %{})

@spec complete_upload(
  Aliyun.Oss.Config.t(),
  String.t(),
  String.t(),
  String.t(),
  [{integer(), String.t()}],
  map()
) :: {: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.

examples

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"},
      ...
    ]
  }
}
Link to this function

init_upload(config, bucket, object, headers \\ %{}, opts \\ [])

@spec init_upload(Aliyun.Oss.Config.t(), String.t(), String.t(), map(), [
  {:encoding_type, :url}
]) ::
  {:error, error()} | {:ok, String.t()}

InitiateMultipartUpload - notifies OSS to initiate a multipart upload task before you perform multipart upload to upload data.

options

Options

  • :encoding_type - default is blank, accept value: :url

examples

Examples

iex> Aliyun.Oss.Object.MultipartUpload.init_upload(config, "some-bucket", "some-object")
{:ok, "UPLOAD_ID"}
Link to this function

list_parts(config, bucket, object, upload_id, query_params \\ %{})

@spec list_parts(Aliyun.Oss.Config.t(), String.t(), String.t(), String.t(), map()) ::
  {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}

ListParts - Lists all parts that are uploaded by using a specified upload ID.

examples

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: [
      {"Server", "AliyunOSS"},
      {"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
      ...
    ]
  }
}
Link to this function

list_uploads(config, bucket, query_params \\ %{})

@spec list_uploads(Aliyun.Oss.Config.t(), String.t(), map()) ::
  {: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.

examples

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-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"},
      ...
    ]
  }
}
Link to this function

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

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" => ""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 function

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

Examples

iex> Aliyun.Oss.Object.MultipartUpload.upload_part(config, "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"},
      ...
    ]
  }
}
Link to this function

upload_part_copy(config, bucket, object, upload_id, part_number, copy_source, copy_source_range \\ "", headers \\ %{})

UploadPartCopy - copies data from an existing object to upload a part by adding a x-oss-copy-request header to UploadPart.

examples

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" => ""09800000000000000000000000000000"",
        "LastModified" => "2017-05-14T07:44:26.000Z"
      }
    },
    headers: [
      {"Server", "AliyunOSS"},
      {"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
      ...
    ]
  }
}