开发者指南

API 文档

SDK 文档

对象操作

最近更新时间:2020-03-20 14:32:03

简介

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

简单操作

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

分块操作

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

简单操作

查询对象列表

功能说明

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

方法原型

GetBucketResult GetBucket(GetBucketRequest request);

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

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID
  GetBucketRequest request = new GetBucketRequest(bucket);
  //设置签名有效时长
  request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
  //获取 a/ 下的对象
  request.SetPrefix("a/");
  //执行请求
  GetBucketResult result = cosXml.GetBucket(request);
  //bucket的相关信息
  ListBucket info = result.listBucket;
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

参数说明

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

返回结果说明

通过 GetBucketResult 返回请求结果。

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

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

简单上传对象

功能说明

上传一个对象至存储桶。最大支持上传不超过5GB的对象,5GB以上对象请使用 分块上传高级接口 上传。

方法原型

PutObjectResult PutObject(PutObjectRequest request);

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

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
  string srcPath = @"temp-source-file";//本地文件绝对路径
  if (!File.Exists(srcPath)) {
    // 如果不存在目标文件,创建一个临时的测试文件
    File.WriteAllBytes(srcPath, new byte[1024]);
  }

  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);
  //对象的 eTag
  string eTag = result.eTag;
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
  string srcPath = @"temp-source-file";//本地文件绝对路径
  if (!File.Exists(srcPath)) {
    // 如果不存在目标文件,创建一个临时的测试文件
    File.WriteAllBytes(srcPath, new byte[1024]);
  }
  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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

GetObjectBytesResult GetObject(GetObjectBytesRequest request);

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

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
  string localDir = System.IO.Path.GetTempPath();//本地文件夹
  string localFileName = "my-local-temp-file"; //指定本地保存的文件名
  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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

//下载返回 bytes 数据
try
{
  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键

  GetObjectBytesRequest request = new GetObjectBytesRequest(bucket, key);
  //设置签名有效时长
  request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
  //设置进度回调
  request.SetCosProgressCallback(delegate (long completed, long total)
  {
    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
  });
  //执行请求
  GetObjectBytesResult result = cosXml.GetObject(request);
  //获取内容
  byte[] content = result.content;
  //请求成功
  Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string sourceAppid = "1250000000"; //账号 appid
  string sourceBucket = "sourcebucket-1250000000"; //"源对象所在的存储桶
  string sourceRegion = "COS_REGION"; //源对象的存储桶所在的地域
  string sourceKey = "sourceObject"; //源对象键
  //构造源对象属性
  CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket, 
    sourceRegion, sourceKey);

  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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 = cosXml.OptionObject(request);
  //请求成功
  Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

参数说明

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

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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);
  request.SetObjectKeys(objects);
  //执行请求
  DeleteMultiObjectResult result = cosXml.DeleteMultiObjects(request);
  //请求成功
  Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 List<string>

返回结果说明

通过 DeleteMultiObjectResult 返回请求结果。

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

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

恢复归档对象

功能说明

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

方法原型

RestoreObjectResult RestoreObject(RestoreObjectRequest request);

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

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 List<string>

返回结果说明

通过 RestoreObjectResult 返回请求结果。

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

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

分块操作

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

分块上传对象,您还可以使用 高级接口 上传(推荐)。

查询分块上传

功能说明

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

方法原型

ListMultiUploadsResult ListMultiUploads(ListMultiUploadsRequest request);

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

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
signStartTimeSecond SetSign 签名有效期起始时间(Unix 时间戳),例如1557902800 long
durationSecond SetSign 签名有效期时长(单位为秒),例如签名有效时期为1分钟:60 long
headerKeys SetSign 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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);
  //请求成功
  "exampleUploadId" = result.initMultipartUpload.uploadId; //用于后续分块上传的 uploadId
  Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
  string uploadId = "exampleUploadId"; //初始化分块上传返回的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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
  string uploadId = "exampleUploadId"; //初始化分块上传返回的uploadId
  int partNumber = 1; //分块编号,必须从1开始递增
  string srcPath = @"temp-source-file";//本地文件绝对路径
  if (!File.Exists(srcPath)) {
    // 如果不存在目标文件,创建一个临时的测试文件
    File.WriteAllBytes(srcPath, new byte[1024]);
  }
  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
  "exampleETag" = result.eTag;
  Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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

  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
  string uploadId = "exampleUploadId"; //初始化分块上传返回的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
  "exampleETag" = result.copyObject.eTag;
  Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
  //请求失败
  Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 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);

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

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

请求示例

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

try
{
  string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
  string key = "exampleobject"; //对象在存储桶中的位置,即称对象键
  string uploadId = "exampleUploadId"; //初始化分块上传返回的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);
}
catch (COSXML.CosException.CosServerException serverEx)
{
  //请求失败
  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 签名的请求头 List<string>
queryParameterKeys SetSign 签名的请求参数 List<string>

返回结果说明

通过 AbortMultipartUploadResult 返回请求结果。

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

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

高级接口(推荐)

上传对象

功能说明

上传接口根据用户文件的长度,自动切分数据,降低用户的使用门槛,用户无需关心分块上传的每个步骤。

方法原型

void Upload(COSXMLUploadTask uploadTask);

请求示例

COSXMLUploadTask 封装了简单上传、分块上传接口的异步请求,并支持暂停、恢复以及取消上传请求,同时支持续传功能。我们推荐使用这种方式来上传对象,示例代码如下:

CosXmlConfig config = new CosXmlConfig.Builder()
  .SetConnectionTimeoutMs(60000)  //设置连接超时时间,单位毫秒,默认45000ms
  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
  .IsHttps(true)  //设置默认 HTTPS 请求
  .SetAppid("1250000000") //设置腾讯云账户的账户标识 APPID
  .SetRegion("COS_REGION") //设置一个默认的存储桶地域
  .Build();

string secretId = "COS_SECRETID";   //云 API 密钥 SecretId
string secretKey = "COS_SECRETKEY"; //云 API 密钥 SecretKey
long durationSecond = 600;          //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, 
  secretKey, durationSecond);

CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

// 初始化 TransferConfig
TransferConfig transferConfig = new TransferConfig();

// 初始化 TransferManager
TransferManager transferManager = new TransferManager(cosXml, transferConfig);

String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键
string srcPath = @"temp-source-file";//本地文件绝对路径
if (!File.Exists(srcPath)) {
  // 如果不存在目标文件,创建一个临时的测试文件
  File.WriteAllBytes(srcPath, new byte[1024]);
}

// 上传对象
COSXMLUploadTask uploadTask = new COSXMLUploadTask(bucket, "COS_REGION", cosPath); // COS_REGION 为存储桶所在地域
uploadTask.SetSrcPath(srcPath);

// 同步调用
var autoEvent = new AutoResetEvent(false);

uploadTask.progressCallback = delegate (long completed, long total)
{
    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
};
uploadTask.successCallback = delegate (CosResult cosResult) 
{
    COSXML.Transfer.COSXMLUploadTask.UploadTaskResult result = cosResult as COSXML.Transfer.COSXMLUploadTask.UploadTaskResult;
    Console.WriteLine(result.GetResultInfo());
    string eTag = result.eTag;
    autoEvent.Set();
};
uploadTask.failCallback = delegate (CosClientException clientEx, CosServerException serverEx) 
{
    if (clientEx != null)
    {
        Console.WriteLine("CosClientException: " + clientEx);
    }
    if (serverEx != null)
    {
        Console.WriteLine("CosServerException: " + serverEx.GetInfo());
    }
    autoEvent.Set();
};
transferManager.Upload(uploadTask);
// 等待任务结束
autoEvent.WaitOne();

//取消上传
// cosxmlUploadTask.cancel();


//暂停上传
// cosxmlUploadTask.pause();

//恢复上传
// cosxmlUploadTask.resume();

参数说明

参数名称 设置方法 描述 类型
bucket 构造方法 存储桶名称,格式:BucketName-APPID string
key 构造方法或 SetCosPath 存储于 COS 上 Object 的 对象键 string
srcPath 构造方法 用于上传到 COS 的本地文件的绝对路径 string
progressCallback SetCosProgressCallback 设置上传进度回调 Callback.OnProgressCallback
successCallback 成员变量 设置任务成功回调 Callback.OnSuccessCallback
failCallback 成员变量 设置任务失败回调 Callback.OnFailedCallback

返回结果说明

通过 PutObjectResult 返回请求结果。

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

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

目录