You need to enable JavaScript to run this app.
导航

列举未合并的对象(列举分片上传任务)- .NET SDK

最近更新时间2024.02.04 18:31:07

首次发布时间2023.08.24 14:41:47

该接口用于列举桶中的正在进行的分片任务,最多返回 1000 个分片上传任务。

说明

  • 如果响应消息中的 IsTruncatedtrue,说明还有未列举的分片上传任务。
  • 使用键标记和 UploadIDMarker 请求参数可以列出额外的分片上传任务。

注意事项

列举分片上传任务之前,您需要确保账号拥有桶的 tos:ListBucketMultipartUploads 权限,具体操作,请参见 IAM 策略概述

参数说明

参数

描述

Prefix

指定列举返回对象的前缀名称。

Delimiter

对对象名称进行分组的字符。

MaxUploads

返回分片上传任务的最大数量。
取值:大于 0 小于等于 1000
默认值:1000

EncodingType

对返回的内容进行编码并指定编码的类型。
默认值:None

KeyMarker

列举分片上传任务的起始位置。设定从该值之后按字母排序返回对象列表。通常为上次请求返回的 nextMarker 值。

VersionIdMarker

keyMarker 配合使用,设定从该值之后按字典排序返回分片上传任务列表。从上次列举结果中 nextVersionIdMarker 获取。

示例代码

简单列举

以下代码用于列举指定存储桶中最多 10 个未合并的分片上传任务。

using System;
using TOS;
using TOS.Error;
using TOS.Model;

namespace ConsoleApp
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY");
            var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY");
            // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS
            // Bucket 的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com
            var endpoint = "https://tos-cn-beijing.volces.com";
            var region = "cn-beijing";
            // 填写 BucketName
            var bucketName = "*** Provide your bucket name ***";

            // 创建TOSClient实例
            var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build();

            try
            {
                var listMultipartUploadsInput = new ListMultipartUploadsInput()
                {
                    Bucket = bucketName,
                    MaxUploads = 10
                };
                // 获取 bucket 中最多 10 个未完成任务
                var listMultipartUploadsOutput = client.ListMultipartUploads(listMultipartUploadsInput);
                foreach (var upload in listMultipartUploadsOutput.Uploads)
                {
                    Console.WriteLine("Object Key: {0}", upload.Key);
                    Console.WriteLine("Object UploadID: {0}", upload.UploadID);
                    Console.WriteLine("Object Owner: {0}", upload.Owner);
                    Console.WriteLine("Object StorageClass: {0}", upload.StorageClass);
                }
            }
            catch (TosServerException ex)
            {
                Console.WriteLine("ListMultipartUploads failed, request id {0}", ex.RequestID);
                Console.WriteLine("ListMultipartUploads failed, status code {0}", ex.StatusCode);
                Console.WriteLine("ListMultipartUploads failed, response error code {0}", ex.Code);
                Console.WriteLine("ListMultipartUploads failed, response error message {0}", ex.Message);
            }
            catch (TosClientException ex)
            {
                Console.WriteLine("ListMultipartUploads failed, error message {0}", ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("ListMultipartUploads failed, {0}", ex.Message);
            }
        }
    }
}

列举指定前缀的所有未合并的分片任务

以下代码用于列举指定存储桶指定前缀下的所有未合并的分片上传任务。

using System;
using TOS;
using TOS.Error;
using TOS.Model;

namespace ConsoleApp
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY");
            var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY");
            // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS
            // Bucket 的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com
            var endpoint = "https://tos-cn-beijing.volces.com";
            var region = "cn-beijing";
            // 填写 BucketName
            var bucketName = "*** Provide your bucket name ***";
            var prefix = "*** Provide your object key prefix ***";

            // 创建TOSClient实例
            var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build();

            try
            {
                // 列举指定前缀下的所有未完成分片的任务
                var truncated = true;
                var marker = "";

                while (truncated)
                {
                    var listMultipartUploadsInput = new ListMultipartUploadsInput()
                    {
                        Bucket = bucketName,
                        MaxUploads = 1000,
                        KeyMarker = marker,
                        Prefix = prefix
                    };
                    var listMultipartUploadsOutput = client.ListMultipartUploads(listMultipartUploadsInput);
                    foreach (var upload in listMultipartUploadsOutput.Uploads)
                    {
                        Console.WriteLine("Object Key: {0}", upload.Key);
                        Console.WriteLine("Object UploadID: {0}", upload.UploadID);
                        Console.WriteLine("Object Owner: {0}", upload.Owner);
                        Console.WriteLine("Object StorageClass: {0}", upload.StorageClass);
                    }

                    truncated = listMultipartUploadsOutput.IsTruncated;
                    marker = listMultipartUploadsOutput.NextKeyMarker;
                }
            }
            catch (TosServerException ex)
            {
                Console.WriteLine("ListMultipartUploads failed, request id {0}", ex.RequestID);
                Console.WriteLine("ListMultipartUploads failed, status code {0}", ex.StatusCode);
                Console.WriteLine("ListMultipartUploads failed, response error code {0}", ex.Code);
                Console.WriteLine("ListMultipartUploads failed, response error message {0}", ex.Message);
            }
            catch (TosClientException ex)
            {
                Console.WriteLine("ListMultipartUploads failed, error message {0}", ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("ListMultipartUploads failed, {0}", ex.Message);
            }
        }
    }
}

列举所有分片上传任务

以下代码用于列举指定存储桶未合并的所有分片上传任务。

using System;
using TOS;
using TOS.Error;
using TOS.Model;

namespace ConsoleApp
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY");
            var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY");
            // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS
            // Bucket 的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com
            var endpoint = "https://tos-cn-beijing.volces.com";
            var region = "cn-beijing";
            // 填写 BucketName
            var bucketName = "*** Provide your bucket name ***";

            // 创建TOSClient实例
            var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build();

            try
            {
                // 列举所有未完成分片的任务
                var truncated = true;
                var marker = "";

                while (truncated)
                {
                    var listMultipartUploadsInput = new ListMultipartUploadsInput()
                    {
                        Bucket = bucketName,
                        MaxUploads = 1000,
                        KeyMarker = marker,
                    };
                    var listMultipartUploadsOutput = client.ListMultipartUploads(listMultipartUploadsInput);
                    foreach (var upload in listMultipartUploadsOutput.Uploads)
                    {
                        Console.WriteLine("Object Key: {0}", upload.Key);
                        Console.WriteLine("Object UploadID: {0}", upload.UploadID);
                        Console.WriteLine("Object Owner: {0}", upload.Owner);
                        Console.WriteLine("Object StorageClass: {0}", upload.StorageClass);
                    }

                    truncated = listMultipartUploadsOutput.IsTruncated;
                    marker = listMultipartUploadsOutput.NextKeyMarker;
                }
            }
            catch (TosServerException ex)
            {
                Console.WriteLine("ListMultipartUploads failed, request id {0}", ex.RequestID);
                Console.WriteLine("ListMultipartUploads failed, status code {0}", ex.StatusCode);
                Console.WriteLine("ListMultipartUploads failed, response error code {0}", ex.Code);
                Console.WriteLine("ListMultipartUploads failed, response error message {0}", ex.Message);
            }
            catch (TosClientException ex)
            {
                Console.WriteLine("ListMultipartUploads failed, error message {0}", ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("ListMultipartUploads failed, {0}", ex.Message);
            }
        }
    }
}

相关文档

关于列举对象分片的 API 接口详细介绍,请参见 ListMultipartUploads