对象操作

最近更新时间:2019-08-20 15:58:02

简介

本文档提供关于对象的简单操作、分块操作等其他操作相关的 API 概览以及 SDK 示例代码。

简单操作

API 操作名 操作描述
GET Bucket(List Object) 查询对象列表 查询存储桶下的部分或者全部对象
PUT Object 上传对象 上传一个对象至存储桶
POST Object 表单上传对象 使用表单请求上传对象
HEAD Object 查询对象元数据 查询对象的元数据信息
GET Object 下载对象 下载一个对象至本地
Options Object 预请求跨域配置 用预请求来确认是否可以发送真正的跨域请求
PUT Object - Copy 复制对象 复制对象到目标路径(对象键)
DELETE Object 删除单个对象 在存储桶中删除指定对象
DELETE Multiple Objects 删除多个对象 在存储桶中批量删除对象

分块操作

API 操作名 操作描述
List Multipart Uploads 查询分块上传 查询正在进行中的分块上传信息
Initiate Multipart Upload 初始化分块上传 初始化分块上传任务
Upload Part 上传分块 分块上传文件
Upload Part - Copy 复制分块 将其他对象复制为一个分块
List Parts 查询已上传块 查询特定分块上传操作中的已上传的块
Complete Multipart Upload 完成分块上传 完成整个文件的分块上传
Abort Multipart Upload 终止分块上传 终止一个分块上传操作并删除已上传的块

其他操作

API 操作名 操作描述
POST Object restore 恢复归档对象 将归档类型的对象取回访问
PUT Object acl 设置对象 ACL 设置存储桶中某个对象的访问控制列表
GET Object acl 查询对象 ACL 查询对象的访问控制列表

简单操作

查询对象列表

功能说明

查询存储桶下的部分或者全部对象。

方法原型

GetBucketResult GetBucket(GetBucketRequest request);

void GetBucket(GetBucketRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID
    GetBucketRequest request = new GetBucketRequest(bucket);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    GetBucketResult result = cosXml.GetBucket(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID
GetBucketRequest request = new GetBucketRequest(bucket);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
cosXml.GetBucket(request, 
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        GetBucketResult result = cosResult as GetBucketResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
    });
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 GetBucketResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
listBucket ListBucket 返回 Bucket 对象列表信息
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

简单上传对象

功能说明

上传一个对象至存储桶。

方法原型

PutObjectResult PutObject(PutObjectRequest request);

void PutObject(PutObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string srcPath = @"F:\exampleobject";//本地文件绝对路径
    PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置进度回调
    request.SetCosProgressCallback(delegate(long completed, long total)
    {
        Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
    });
    //执行请求
    PutObjectResult result = cosXml.PutObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string srcPath = @"F:\exampleobject";  //本地文件绝对路径
PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置进度回调
request.SetCosProgressCallback(delegate(long completed, long total)
{
    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
});
//执行请求
cosXml.PutObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        PutObjectResult result = cosResult as PutObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
srcPath 构造方法 用于上传到 COS 的本地文件的绝对路径 string
data 构造方法 用于上传到 COS 的 byte 数组 byte[]
progressCallback SetCosProgressCallback 设置上传进度回调 Callback.OnProgressCallback
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 PutObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
eTag string 返回对象的 eTag
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

表单上传对象

功能说明

使用表单请求上传对象。

方法原型

PostObjectResult PostObject(PostObjectRequest request);

void PostObject(PostObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string srcPath = @"F:\exampleobject";//本地文件绝对路径
    PostObjectRequest request = new PostObjectRequest(bucket, key, srcPath);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置进度回调
    request.SetCosProgressCallback(delegate(long completed, long total)
    {
        Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
    });
    //执行请求
    PostObjectResult result = cosXml.PostObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string srcPath = @"F:\exampleobject";  //本地文件绝对路径
PostObjectRequest request = new PostObjectRequest(bucket, key, srcPath);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置进度回调
request.SetCosProgressCallback(delegate(long completed, long total)
{
    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
});
//执行请求
cosXml.PostObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        PostObjectResult result = cosResult as PostObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
srcPath 构造方法 用于上传到 COS 的本地文件的绝对路径 string
data 构造方法 用于上传到 COS 的 byte 数组 byte[]
progressCallback SetCosProgressCallback 设置上传进度回调 Callback.OnProgressCallback
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 PostObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
eTag string 返回对象的 eTag
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

查询对象元数据

功能说明

查询对象的元数据信息。

方法原型

HeadObjectResult HeadObject(HeadObjectRequest request);

void HeadObject(HeadObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    HeadObjectRequest request = new HeadObjectRequest(bucket, key);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    HeadObjectResult result = cosXml.HeadObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
HeadObjectRequest request = new HeadObjectRequest(bucket, key);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.HeadObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        HeadObjectResult result = cosResult as HeadObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法或 SetCosPath 存储于 COS 上 Object 的对象键 string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 HeadObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
eTag string 返回对象的 eTag
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

下载对象

功能说明

下载一个对象至本地。

方法原型

GetObjectResult GetObject(GetObjectRequest request);

void GetObject(GetObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string localDir = @"F:\";//下载到本地指定文件夹
    string localFileName = "exampleobject"; //指定本地保存的文件名
    GetObjectRequest request = new GetObjectRequest(bucket, key, localDir, localFileName);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置进度回调
    request.SetCosProgressCallback(delegate(long completed, long total)
    {
        Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
    });
    //执行请求
    GetObjectResult result = cosXml.GetObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
     Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string localDir = @"F:\";//下载到本地指定文件夹
string localFileName = "exampleobject"; //指定本地保存的文件名
GetObjectRequest request = new GetObjectRequest(bucket, key, localDir, localFileName);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置进度回调
request.SetCosProgressCallback(delegate(long completed, long total)
{
    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
});
//执行请求
cosXml.GetObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        GetObjectResult result = cosResult as GetObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
localDir 构造方法 下载对象到本地保存的绝对文件夹路径 string
localFileName 构造方法 下载对象到本地保存的文件名 string
progressCallback SetCosProgressCallback 设置下载进度回调 Callback.OnProgressCallback
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 GetObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
eTag string 返回对象的 eTag
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

简单复制

功能说明

复制对象到目标路径(对象键)。

方法原型

CopyObjectResult CopyObject(CopyObjectRequest request);

void CopyObject(CopyObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string sourceAppid = "1253960454"; //账号 appid
    string sourceBucket = "source-1253960454"; //"源对象所在的存储桶
    string sourceRegion = "ap-beijing"; //源对象的存储桶所在的地域
    string sourceKey = "exampleobject"; //源对象键
    //构造源对象属性
    COSXML.Model.Tag.CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket, sourceRegion, sourceKey);

    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "copy_exampleobject"; //对象在存储桶中的位置,即称对象键.
    CopyObjectRequest request =  new CopyObjectRequest(bucket, key);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置拷贝源
    request.SetCopySource(copySource);
    //设置是否拷贝还是更新,此处是拷贝
    request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY);
    //执行请求
    CopyObjectResult result = cosXml.CopyObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string sourceAppid = "1253960454"; //账号 appid
string sourceBucket = "source-1253960454"; //"源对象所在的存储桶
string sourceRegion = "ap-beijing"; //源对象的存储桶所在的地域
string sourceKey = "exampleobject"; //源对象键
//构造源对象属性
COSXML.Model.Tag.CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket, sourceRegion, sourceKey);

string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "copy_exampleobject"; //对象在存储桶中的位置,即称对象键.
CopyObjectRequest request =  new CopyObjectRequest(bucket, key);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置拷贝源
request.SetCopySource(copySource);
//设置是否拷贝还是更新,此处是拷贝
request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY);
//执行请求
cosXml.CopyObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        CopyObjectResult result = cosResult as CopyObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
    });
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
copySource SetCopySource 复制的数据源路径描述 CopySourceStruct
metaDataDirective SetCopyMetaDataDirective 是否拷贝源文件的元数据或者更新源文件的元数据 CosMetaDataDirective
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 CopyObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
copyObject CopyObject 返回成功复制的对象信息
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

预请求跨域配置

功能说明

用预请求来确认是否可以发送真正的跨域请求。

方法原型

OptionObjectResult OptionObject(OptionObjectRequest request);

void OptionObject(OptionObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string origin = "http://cloud.tencent.com";
    string accessMthod = "PUT";
    OptionObjectRequest request = new OptionObjectRequest(bucket, key, origin, accessMthod);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    OptionObjectResult result = cosResult as OptionObjectResult;
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string origin = "http://cloud.tencent.com";
string accessMthod = "PUT";
OptionObjectRequest request = new OptionObjectRequest(bucket, key, origin, accessMthod);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.DeleteObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        OptionObjectResult result = cosResult as OptionObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
origin 构造方法 或 SetOrigin 模拟跨域访问的请求来源域名 string
accessMthod 构造方法 或 SetAccessControlMethod 模拟跨域访问的请求 HTTP 方法 string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 DeleteObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
accessControlAllowHeaders List<string> 跨域访问的允许请求头部
accessControlAllowMethods List<string> 跨域访问的允许请求 HTTP 方法
accessControlAllowExposeHeaders List<string> 跨域访问的允许请求自定义头部
accessControlMaxAge long OPTIONS 请求得到结果的有效期
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

删除单个对象

功能说明

在存储桶中删除指定对象。

方法原型

DeleteObjectResult DeleteObject(DeleteObjectRequest request);

void DeleteObject(DeleteObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    DeleteObjectRequest request = new DeleteObjectRequest(bucket, key);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    DeleteObjectResult result = cosXml.DeleteObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
DeleteObjectRequest request = new DeleteObjectRequest(bucket, key);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.DeleteObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        DeleteObjectResult getObjectResult = result as DeleteObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 DeleteObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

删除多个对象

功能说明

在存储桶中批量删除对象。

方法原型

DeleteMultiObjectResult  DeleteMultiObjects(DeleteMultiObjectRequest request);

void DeleteMultiObjects(DeleteObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    DeleteMultiObjectRequest  request = new DeleteMultiObjectRequest (bucket);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置返回结果形式
    request.SetDeleteQuiet(false);
    //对象key
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
    List<string> objects = new List<string>();
    objects.Add(key);
    //执行请求
    DeleteMultiObjectResult result = cosXml.DeleteMultiObjects(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
DeleteMultiObjectRequest request = new DeleteMultiObjectRequest(bucket);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置返回结果形式
request.SetDeleteQuiet(false);
//对象key
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
List<string> objects = new List<string>();
objects.Add(key);
//执行请求
cosXml.DeleteMultiObjects(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        DeleteMultiObjectResult  result = result as DeleteMultiObjectResult ;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
quiet SetDeleteQuiet 结果返回模式:false,verbose 模式; true, quiet 模式 bool
keys SetObjectKeys 删除对象key的集合 List<string>
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 DeleteMultiObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
deleteResult DeleteResult 批量删除对象返回的结果
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

分块操作

分块上传对象可包括的操作:

  • 分块上传对象:初始化分块上传,上传分块,完成所有分块上传。
  • 分块续传:查询已上传的分块,上传分块,完成所有分块上传。
  • 删除已上传分块。

查询分块上传

功能说明

查询正在进行中的分块上传信息。

方法原型

ListMultiUploadsResult ListMultiUploads(ListMultiUploadsRequest request);

void ListMultiUploads(ListMultiUploadsRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID
    ListMultiUploadsRequest request = new ListMultiUploadsRequest(bucket);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    ListMultiUploadsResult result = cosXml.ListMultiUploads(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID
ListMultiUploadsRequest request = new ListMultiUploadsRequest(bucket);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.ListMultiUploads(request, 
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        ListMultiUploadsResult result = cosResult as ListMultiUploadsResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
    });
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 ListMultiUploadsResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
listMultipartUploads ListMultipartUploads 返回 Bucket 中所有正在进行分块上传的信息
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

初始化分块上传

功能说明

初始化分块上传任务。

方法原型

InitMultipartUploadResult InitMultipartUpload(InitMultipartUploadRequest request);

void InitMultipartUpload(InitMultipartUploadRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    InitMultipartUploadRequest request = new InitMultipartUploadRequest(bucket, key);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    InitMultipartUploadResult result = cosXml.InitMultipartUpload(request);
    //请求成功
    string uploadId = result.initMultipartUpload.uploadId; //用于后续分块上传的 uploadId
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
InitMultipartUploadRequest request = new InitMultipartUploadRequest(bucket, key);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.InitMultipartUpload(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        InitMultipartUploadResult result = cosResult as InitMultipartUploadResult;
        string uploadId = result.initMultipartUpload.uploadId; //用于后续分块上传的 uploadId
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 InitMultipartUploadResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
initMultipartUpload InitiateMultipartUpload 返回 对象 初始化分块上传的 uploadId
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

查询已上传块

功能说明

查询特定分块上传操作中的已上传的块。

方法原型

ListPartsResult ListParts(ListPartsRequest request);

void ListParts(ListPartsRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
    ListPartsRequest request = new ListPartsRequest(bucket, key, uploadId);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    ListPartsResult result = cosXml.ListParts(request);
    //请求成功
    //列举已上传的分块
    List<COSXML.Model.Tag.ListParts.Part> alreadyUploadParts = result.listParts.parts;
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
ListPartsRequest request = new ListPartsRequest(bucket, key, uploadId);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.ListParts(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        ListPartsResult result = cosResult as ListPartsResult;
        //列举已上传的分块
        List<COSXML.Model.Tag.ListParts.Part> alreadyUploadParts = result.listParts.parts;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
     {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
uploadId 构造方法 或 SetUploadId 标识指定分块上传的 uploadId string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 ListPartsResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
listParts ListParts 返回指定 uploadId 分块上传中的已上传的块信息
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

上传分块

功能说明

分块上传文件。

方法原型

UploadPartResult UploadPart(UploadPartRequest request);

void UploadPart(UploadPartRequest, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
    int partNumber = 1; //分块编号,必须从1开始递增
    string srcPath = @"F:\exampleobject"; //本地文件绝对路径
    UploadPartRequest request = new UploadPartRequest(bucket, key, partNumber, uploadId, srcPath);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置进度回调
    request.SetCosProgressCallback(delegate(long completed, long total)
    {
        Console.WriteLine(String.Format("progress = {0:##.##}%",  completed * 100.0 / total));
    });
    //执行请求
    UploadPartResult result = cosXml.UploadPart(request);
    //请求成功
    //获取返回分块的eTag,用于后续CompleteMultiUploads
    string eTag = result.eTag;
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
int partNumber = 1; //分块编号,必须从1开始递增
string srcPath = @"F:\exampleobject"; //本地文件绝对路径
UploadPartRequest request = new UploadPartRequest(bucket, key, partNumber, uploadId, srcPath);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置进度回调
request.SetCosProgressCallback(delegate(long completed, long total)
{
    Console.WriteLine(String.Format("progress = {0:##.##}%",  completed * 100.0 / total));
});
//执行请求
cosXml.UploadPart(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        UploadPartResult result = cosResult as UploadPartResult;
        //获取返回分块的eTag,用于后续CompleteMultiUploads
        string eTag = result.eTag;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
uploadId 构造方法 或 SetUploadId 标识指定分块上传的 uploadId string
partNumber 构造方法 或 SetPartNumber 标识指定分块的编号,必须 >= 1 int
srcPath 构造方法 用于上传到 COS 的本地文件的绝对路径 string
data 构造方法 用于上传到 COS 的 byte 数组 byte[]
progressCallback SetCosProgressCallback 设置上传进度回调 Callback.OnProgressCallback
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 UploadPartResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
eTag string 返回对象的分块的 eTag
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

复制分块

功能说明

将其他对象复制为一个分块。

方法原型

UploadPartCopyResult PartCopy(UploadPartCopyRequest request);

void PartCopy(UploadPartCopyRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string sourceAppid = "1253960454"; //账号 appid
    string sourceBucket = "source-1253960454"; //"源对象所在的存储桶
    string sourceRegion = "ap-beijing"; //源对象的存储桶所在的地域
    string sourceKey = "exampleobject"; //源对象键
    //构造源对象属性
    COSXML.Model.Tag.CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket, sourceRegion, sourceKey);

    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "copy_exampleobject"; //对象在存储桶中的位置,即称对象键.
    string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
    int partNumber = 1; //分块编号,必须从1开始递增
    UploadPartCopyRequest  request = new UploadPartCopyRequest  (bucket, key, partNumber, uploadId);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置拷贝源
    request.SetCopySource(copySource);
    //设置复制分块(指定块的范围,如 0 ~ 1M)
    request.SetCopyRange(0, 1024 * 1024);
    //执行请求
    UploadPartCopyResult  result = cosXml.PartCopy(request);
    //请求成功
    //获取返回分块的eTag,用于后续CompleteMultiUploads
    string eTag = result.copyObject.eTag;
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string sourceAppid = "1253960454"; //账号 appid
string sourceBucket = "source-1253960454"; //"源对象所在的存储桶
string sourceRegion = "ap-beijing"; //源对象的存储桶所在的地域
string sourceKey = "exampleobject"; //源对象键
//构造源对象属性
COSXML.Model.Tag.CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket, sourceRegion, sourceKey);

string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "copy_exampleobject"; //对象在存储桶中的位置,即称对象键.
string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
int partNumber = 1; //分块编号,必须从1开始递增
UploadPartCopyRequest  request = new UploadPartCopyRequest (bucket, key, partNumber, uploadId);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置拷贝源
request.SetCopySource(copySource);
//设置复制分块(指定块的范围,如 0 ~ 1M)
request.SetCopyRange(0, 1024 * 1024);
//执行请求
cosXml.PartCopy(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        UploadPartCopyResult getObjectResult = result as UploadPartCopyResult;
        //获取返回分块的eTag,用于后续CompleteMultiUploads
        string eTag = result.copyObject.eTag;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
uploadId 构造方法 或 SetUploadId 标识指定分块上传的 uploadId string
partNumber 构造方法 或 SetPartNumber 标识指定分块的编号,必须 >= 1 int
copySource SetCopySource 复制的数据源路径描述 CopySourceStruct
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 UploadPartCopyResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
copyObject CopyObject 返回成功复制的对象信息
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

完成分块上传

功能说明

完成整个文件的分块上传。

方法原型

CompleteMultipartUploadResult CompleteMultiUpload(CompleteMultipartUploadRequest request);

void CompleteMultiUpload(CompleteMultipartUploadRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
    CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(bucket, key, uploadId);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置已上传的parts,必须有序,按照partNumber递增
    request.SetPartNumberAndETag(1, "partNumber1 eTag");
    //执行请求
    CompleteMultipartUploadResult result = cosXml.CompleteMultiUpload(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(bucket, key, uploadId);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置已上传的parts,必须有序,按照partNumber递增
request.SetPartNumberAndETag(1, "partNumber1 eTag");
//执行请求
cosXml.CompleteMultiUpload(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        CompleteMultipartUploadResult result = result as CompleteMultipartUploadResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
   {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
    });
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
uploadId 构造方法 或 SetUploadId 标识指定分块上传的 uploadId string
partNumber SetPartNumberAndETag 标识指定分块的编号,必须 >= 1 int
eTag SetPartNumberAndETag 标识指定分块的上传返回的 eTag string
partNumberAndETags SetPartNumberAndETag 标识分块的编号和上传返回的 eTag Dictionary<int, string>
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 CompleteMultipartUploadResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
CompleteResult CompleteMultipartUploadResult 返回所有分块上传成功信息
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

终止分块上传

功能说明

终止一个分块上传操作并删除已上传的块。

方法原型

AbortMultipartUploadResult AbortMultiUpload(AbortMultipartUploadRequest request);

void AbortMultiUpload(AbortMultipartUploadRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
    AbortMultipartUploadRequest request = new AbortMultipartUploadRequest(bucket, key, uploadId);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    AbortMultipartUploadResult result = cosXml.AbortMultiUpload(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
string uploadId ="xxxxxxxx"; //初始化分块上传返回的uploadId
AbortMultipartUploadRequest request = new AbortMultipartUploadRequest(bucket, key, uploadId);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.AbortMultiUpload(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        AbortMultipartUploadResult result = result as AbortMultipartUploadResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
uploadId 构造方法 或 SetUploadId 标识指定分块上传的 uploadId string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 AbortMultipartUploadResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

其他操作

恢复归档对象

功能说明

将归档类型的对象取回访问。

方法原型

RestoreObjectResult RestoreObject(RestoreObjectRequest request);

void RestoreObject(RestoreObjectRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    RestoreObjectRequest request = new RestoreObjectRequest(bucket, key);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //恢复时间
    request.SetExpireDays(3);
    request.SetTier(COSXML.Model.Tag.RestoreConfigure.Tier.Bulk);

    //执行请求
    RestoreObjectResult result = cosXml.RestoreObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
RestoreObjectRequest request = new RestoreObjectRequest(bucket, key);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//恢复时间
request.SetExpireDays(3);
request.SetTier(COSXML.Model.Tag.RestoreConfigure.Tier.Bulk);
//执行请求
cosXml.RestoreObject(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        RestoreObjectResult result = cosResult as RestoreObjectResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
days SetExpireDays 设置临时副本的过期时间 int
tier SetTier 恢复数据时,Tier 可以指定为 CAS 支持的三种恢复类型,分别为 Expedited、Standard、Bulk RestoreConfigure.Tier
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 RestoreObjectResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

设置对象 ACL

功能说明

设置指定存储桶访问权限控制列表。

方法原型

PutObjectACLResult PutObjectACL(PutObjectACLRequest request);

void PutObjectACL(PutObjectACLRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    PutObjectACLRequest request = new PutObjectACLRequest(bucket, key);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //设置私有读写权限 
    request.SetCosACL(CosACL.PRIVATE); 
    //授予1131975903账号读权限 
    COSXML.Model.Tag.GrantAccount readAccount = new COSXML.Model.Tag.GrantAccount(); 
    readAccount.AddGrantAccount("1131975903", "1131975903"); 
    request.SetXCosGrantRead(readAccount);
    //执行请求
    PutObjectACLResult result = cosXml.PutObjectACL(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
PutObjectACLRequest request = new PutObjectACLRequest(bucket, key);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置私有读写权限 
request.SetCosACL(CosACL.PRIVATE); 
//授予1131975903账号读权限 
COSXML.Model.Tag.GrantAccount readAccount = new COSXML.Model.Tag.GrantAccount(); 
readAccount.AddGrantAccount("1131975903", "1131975903"); 
request.SetXCosGrantRead(readAccount);
//执行请求
cosXml.PutObjectACL(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        PutObjectACLResult result = cosResult as PutObjectACLResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
cosAcl SetCosAcl 设置存储桶的acl权限 string
grandtAccout SetXCosGrantRead 或 SetXCosGrantWrite 或 SetXCosReadWrite 授予用户读写权限 GrantAccount
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url中查询参数 List<string>

返回结果说明

通过 PutObjectACLResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。

查询存储桶 ACL

功能说明

查询存储桶的访问控制列表。

方法原型

GetObjectACLResult GetObjectACL(GetObjectACLRequest request);

void GetObjectACL(GetObjectACLRequest request, COSXML.Callback.OnSuccessCallback<CosResult> successCallback, COSXML.Callback.OnFailedCallback failCallback);

请求示例

try
{
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
    GetObjectACLRequest request = new GetObjectACLRequest(bucket, key);
    //设置签名有效时长
    request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
    //执行请求
    GetObjectACLResult result = cosXml.GetObjectACL(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{    
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx.Message);
}
catch (COSXML.CosException.CosServerException serverEx)
{
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

/**
//异步方法
string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
GetObjectACLRequest request = new GetObjectACLRequest(bucket, key);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//执行请求
cosXml.GetObjectACL(request,
    delegate(COSXML.Model.CosResult cosResult)
    {
        //请求成功
        GetObjectACLResult result = cosResult as GetObjectACLResult;
        Console.WriteLine(result.GetResultInfo());

    }, 
    delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
    {    
        //请求失败
        if (clientEx != null)
        {
            Console.WriteLine("CosClientException: " + clientEx.Message);
        }
        else if (serverEx != null)
        {
            Console.WriteLine("CosServerException: " + serverEx.GetInfo());
        }
});
*/

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法 或 SetCosPath 存储于 COS 上 Object 的 对象键 string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名是否校验 header List<string>
queryParameterKeys SetSign 签名是否校验请求 url 中查询参数 List<string>

返回结果说明

通过 GetObjectACLResult 返回请求结果。

成员变量 类型 描述
httpCode int HTTP Code, [200, 300)之间表示操作成功,否则表示操作失败
accessControlPolicy AccessControlPolicy 返回对象的访问权限列表信息
说明:

操作失败时,系统将抛出 CosClientExceptionCosServerException 异常。