华为云用户手册

  • 异步上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.BeginPutObject和ObsClient.EndPutObject,进行异步上传对象。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 异步上传文件 try { PutObjectRequest request = new PutObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", FilePath = "localfile",//待上传的本地文件路径,需要指定到具体的文件名 }; client.BeginPutObject(request, delegate(IAsyncResult ar){ try { PutObjectResponse response = client.EndPutObject(ar); Console.WriteLine("put object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } }, null); } catch (ObsException ex) { Console.WriteLine("Message: {0}", ex.Message); } 父主题: 上传对象
  • 下载归档存储对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 如果要下载归档存储对象,需要先将归档存储对象恢复。恢复归档存储对象的恢复选项可支持两类,见下表: 选项 说明 OBS .NET SDK对应值 快速恢复 恢复耗时1~5分钟。 RestoreTierEnum.Expedited 标准恢复 恢复耗时3~5小时。默认值。 RestoreTierEnum.Standard 重复恢复归档存储数据时在延长恢复有效期的同时,也将会对恢复时产生的恢复费用进行重复收取。产生的标准存储类别的对象副本有效期将会延长,并且收取延长时间段产生的标准存储副本费用。 您可以通过ObsClient.RestoreObject恢复归档存储对象。以下代码展示了如何下载归档存储对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { RestoreObjectRequest request = new RestoreObjectRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; request.Days = 5; request.Tier = RestoreTierEnum.Expedited; // 可选参数,默认情况下,恢复的是最新版本的对象。如果要恢复指定版本的对象,则可携带versionId参数 // request.VersionId = "versionId"; RestoreObjectResponse response = client.RestoreObject(request); Console.WriteLine("Restore object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } ObsClient.RestoreObject中指定的对象必须是归档存储类型,否则调用该接口会抛出异常。 RestoreObjectRequest.Days指定恢复对象保存的时间,取值范围是1~30。 RestoreObjectRequest.Tier指定恢复选项,表示恢复对象所耗的时间。 父主题: 下载对象
  • 批量删除多版本对象 您可以通过ObsClient.DeleteObjects接口传入每个待删除对象的版本号(VersionId)批量删除多版本对象,示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 删除两个多版本对象 try { DeleteObjectsRequest request = new DeleteObjectsRequest(); request.BucketName = "bucketname"; request.Quiet = true; request.AddKey("objectName1", "versionId1"); request.AddKey("objectName2", "versionId2"); DeleteObjectsResponse response = client.DeleteObjects(request); Console.WriteLine("Delete objects response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 删除单个多版本对象 您可以通过ObsClient.DeleteObject接口传入版本号(VersionId)删除多版本对象,示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 删除单个多版本对象 try { DeleteObjectRequest request = new DeleteObjectRequest() { BucketName = "buckername", ObjectKey = "objectname", VersionId = "versionId" }; DeleteObjectResponse response = client.DeleteObject(request); Console.WriteLine("Delete object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 获取桶区域位置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketLocation获取桶的区域位置。以下代码展示如何获取桶区域位置: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 获取桶区域位置 try { GetBucketLocationRequest request = new GetBucketLocationRequest { BucketName = "bucketname", }; GetBucketLocationResponse response = client.GetBucketLocation(request); Console.WriteLine("Get bucket location response: {0}", response.StatusCode); Console.WriteLine("Location: {0}", response.Location); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 创建桶时可以指定桶的区域位置,请参见创建桶。 父主题: 管理桶
  • 获取自定义元数据 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 下载对象成功后会返回对象的自定义元数据。以下代码展示了如何获取自定义元数据: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 下载对象 try { GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", }; using (GetObjectResponse response = client.GetObject(request)) { //获取对象自定义元数据 foreach (string key in response.Metadata.Keys) { Console.WriteLine("key is :" + key + " value is: " + response.Metadata[key]); } string dest = "savepath"; if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); } Console.WriteLine("Get object response: {0}", response.StatusCode); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 父主题: 下载对象
  • 删除桶标签 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.DeleteBucketTagging删除桶标签。以下代码展示了如何删除桶标签: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 删除桶标签 try { DeleteBucketTaggingRequest request = new DeleteBucketTaggingRequest { BucketName = "bucketname", }; DeleteBucketTaggingResponse response = client.DeleteBucketTagging(request); Console.WriteLine("Delete bucket tag response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 父主题: 标签管理
  • 获取桶配额 您可以通过ObsClient.GetBucketQuota获取桶配额。以下代码展示如何获取桶配额: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 获取桶配额 try { GetBucketQuotaRequest request = new GetBucketQuotaRequest { BucketName = "bucketname", }; GetBucketQuotaResponse response = client.GetBucketQuota(request); Console.WriteLine("Get bucket quota response: {0}", response.StatusCode); Console.WriteLine("StorageQuota: {0}", response.StorageQuota); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 设置桶配额 您可以通过ObsClient.SetBucketQuota设置桶配额。以下代码展示如何设置桶配额: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 设置桶配额 try { SetBucketQuotaRequest request = new SetBucketQuotaRequest { BucketName = "bucketname", StorageQuota = 0L, }; SetBucketQuotaResponse response = client.SetBucketQuota(request); Console.WriteLine("Set bucket quota response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 桶配额值类型为字符串,支持的最大值为263 - 1的字符串形式。
  • 获取对象属性 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetObjectMetadata来获取对象属性,包括对象最后修改时间、版本号、对象自定义元数据等信息。以下代码展示了如何获取对象属性: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { GetObjectMetadataRequest request = new GetObjectMetadataRequest(); // 指定存储桶名称 request.BucketName = "bucketname"; // 指定对象,此处以 example/objectname 为例 request.ObjectKey = "example/objectname"; // 获取对象元数据 GetObjectMetadataResponse response = client.GetObjectMetadata(request); Console.WriteLine("Get object metadata response: {0}", response.StatusCode); // 获取对象的ETag值 Console.WriteLine("Object etag {0}: ", response.ETag); // 获取对象的版本号 Console.WriteLine("Object versionId {0}: ", response.VersionId); // 获取对象数据的长度,单位是字节 Console.WriteLine("Object contentLength {0}: ", response.ContentLength); } catch (ObsException ex) { Console.WriteLine("Message: {0}", ex.Message); } 父主题: 管理对象
  • 异步调用方式 异步调用使用回调函数返回调用结果,以下代码展示了使用OBS客户端进行异步调用的通用方式: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 异步调用接口,例如创建桶 CreateBucketRequest request = new CreateBucketRequest { BucketName = "bucketname", }; client.BeginCreateBucket(request, delegate(IAsyncResult ar){ try { CreateBucketResponse response = client.EndCreateBucket(ar); Console.WriteLine("Create bucket response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } }, null); Console.ReadKey();
  • 获取多版本对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetObject接口传入版本号(VersionId)来获取多版本对象,示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 获取多版本对象 try { GetObjectRequest getObjectRequest = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", VersionId = "versionId", }; using (GetObjectResponse response = client.GetObject(getObjectRequest)) { Console.WriteLine("Get object response: {0}", response.StatusCode); //将文件保存到本地 if (!File.Exists("savePath")) { response.WriteResponseStreamToFile("savePath"); } } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 如果版本号为空则默认下载最新版本的对象。 父主题: 多版本控制
  • 列举文件夹中的所有多版本对象 OBS本身是没有文件夹的概念的,桶中存储的元素只有对象。文件夹对象实际上是一个大小为0且对象名以“/”结尾的对象,将这个文件夹对象名作为前缀,即可模拟列举文件夹中对象的功能。以下代码展示如何列举文件夹中的多版本对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //分页列举全部多版本对象 try { ListVersionsRequest request = new ListVersionsRequest(); request.BucketName = "bucketname"; request.MaxKeys = 1000; // 设置文件夹对象名"dir/"为前缀 request.Prefix = "dir/"; ListVersionsResponse response; do { response = client.ListVersions(request); Console.WriteLine("List versions response: {0}", response.StatusCode); foreach (ObsObjectVersion objectVersion in response.Versions) { Console.WriteLine("Key: {0}", objectVersion.ObjectKey); Console.WriteLine("VersionId: {0}", objectVersion.VersionId); } request.KeyMarker = response.NextKeyMarker; request.VersionIdMarker = response.NextVersionIdMarker; } while (response.IsTruncated); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 指定前缀列举 以下代码展示如何指定前缀列举多版本对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //指定前缀列举 try { ListVersionsRequest request = new ListVersionsRequest(); request.BucketName = "bucketname"; request.MaxKeys = 100; request.Prefix = "prefix"; ListVersionsResponse response = client.ListVersions(request); foreach (ObsObjectVersion objectVersion in response.Versions) { Console.WriteLine("Key: {0}", objectVersion.ObjectKey); Console.WriteLine("VersionId: {0}", objectVersion.VersionId); } Console.WriteLine("List versions response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 分页列举全部多版本对象 以下代码展示分页列举全部多版本对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //分页列举全部多版本对象 try { ListVersionsRequest request = new ListVersionsRequest(); request.BucketName = "bucketname"; request.MaxKeys = 100; ListVersionsResponse response; do { response = client.ListVersions(request); Console.WriteLine("List versions response: {0}", response.StatusCode); foreach (ObsObjectVersion objectVersion in response.Versions) { Console.WriteLine("Key: {0}", objectVersion.ObjectKey); Console.WriteLine("VersionId: {0}", objectVersion.VersionId); } request.KeyMarker = response.NextKeyMarker; request.VersionIdMarker = response.NextVersionIdMarker; } while (response.IsTruncated); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 指定起始位置列举 以下代码展示如何指定起始位置列举多版本对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //指定起始位置列举 try { ListVersionsRequest request = new ListVersionsRequest(); request.BucketName = "bucketname"; request.MaxKeys = 100; request.Prefix = "prefix"; request.KeyMarker = "keyMarker"; ListVersionsResponse response = client.ListVersions(request); foreach (ObsObjectVersion objectVersion in response.Versions) { Console.WriteLine("Key: {0}", objectVersion.ObjectKey); Console.WriteLine("VersionId: {0}", objectVersion.VersionId); } Console.WriteLine("List versions response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 简单列举 以下代码展示如何简单列举多版本对象,最多返回1000个对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //列举多版本对象 try { ListVersionsRequest request = new ListVersionsRequest(); request.BucketName = "bucketname"; ListVersionsResponse response = client.ListVersions(request); foreach (ObsObjectVersion objectVersion in response.Versions) { Console.WriteLine("Key: {0}", objectVersion.ObjectKey); Console.WriteLine("VersionId: {0}", objectVersion.VersionId); } Console.WriteLine("List versions response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 每次至多返回1000个多版本对象,如果指定桶包含的对象数量大于1000,则返回结果中ListVersionsResponse.IsTruncated为true表明本次没有返回全部对象,并可通过ListVersionsResponse.NextKeyMarker和ListVersionsResponse.NextVersionIdMarker获取下次列举的起始位置。
  • 指定数目列举 以下代码展示如何指定数目列举多版本对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //指定数目列举 try { ListVersionsRequest request = new ListVersionsRequest(); request.BucketName = "bucketname"; request.MaxKeys = 100; ListVersionsResponse response = client.ListVersions(request); foreach (ObsObjectVersion objectVersion in response.Versions) { Console.WriteLine("Key: {0}", objectVersion.ObjectKey); Console.WriteLine("VersionId: {0}", objectVersion.VersionId); } Console.WriteLine("List versions response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 网站文件托管 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可通过以下步骤实现网站文件托管: 将网站文件上传至OBS的桶中,并设置对象MIME类型。 设置对象访问权限为公共读。 通过浏览器访问对象。 以下代码展示了如何实现网站文件托管: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { //设置对象MIME类型 PutObjectRequest request = new PutObjectRequest { BucketName = "bucketname", ObjectKey = "test.html", FilePath = "localfile.html",//上传的本地文件路径,需要指定到具体的文件名 CannedAcl = CannedAclEnum.PublicRead,//设置对象访问权限为公共读 ContentType = "text/html", }; //上传对象 PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 上例中您可以使用https://bucketname.your-endpoint/test.html在浏览器直接访问托管的文件。 父主题: 静态网站托管
  • 断点续传下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 当下载大对象到本地文件时,经常出现因网络不稳定或程序崩溃导致下载失败的情况。失败后再次重新下载不仅浪费资源,而且当网络不稳定时仍然有下载失败的风险。断点续传下载接口能有效地解决此类问题引起的下载失败,其原理是将待下载的对象分成若干个分段分别下载,并实时地将每段下载结果统一记录在Checkpoint文件中,仅当所有分段都下载成功时返回下载成功的结果,否则抛出异常提醒用户再次调用接口进行重新下载(重新下载时因为有Checkpoint文件记录当前的下载进度,避免重新下载所有分段,从而节省资源提高效率)。 您可以通过ObsClient.DownloadFile进行断点续传下载。该接口可设置的主要参数如下: 参数 作用 OBS .NET SDK对应属性 BucketName 桶名,必选参数。 DownloadFileRequest.BucketName ObjectKey 对象名,必选参数。 DownloadFileRequest.ObjectKey DownloadFile 下载对象的本地文件全路径。当该值为空时,默认为当前程序的运行目录。 DownloadFileRequest.DownloadFile DownloadPartSize 分段大小,单位字节,取值范围是5MB~5GB,默认为5MB。 DownloadFileRequest.DownloadPartSize EnableCheckpoint 是否开启断点续传模式,默认为false,表示不开启。 DownloadFileRequest.EnableCheckpoint CheckpointFile 记录下载进度的文件,只在断点续传模式下有效。当该值为空时,默认与下载对象的本地文件路径同目录。 DownloadFileRequest.CheckpointFile VersionId 对象的版本号。 DownloadFileRequest.VersionId TaskNum 分段下载时的最大并发数,默认为1。 DownloadFileRequest.TaskNum DownloadProgress 下载进度回调函数。 DownloadFileRequest.DownloadProgress ProgressType 下载进度反馈方式。 DownloadFileRequest.ProgressType ProgressInterval 下载进度反馈间隔。 DownloadFileRequest.ProgressInterval DownloadEventHandler 下载事件回调函数。 DownloadFileRequest.DownloadEventHandler 以下代码展示了如何使用断点续传下载接口下载对象到本地文件: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 断点续传下载文件 try { DownloadFileRequest request = new DownloadFileRequest { BucketName = "bucketname", ObjectKey = "objectname", // 待下载的本地文件路径 DownloadFile = "savepath", // 下载段大小为10MB DownloadPartSize = 1024 * 1024 * 10, // 开启断点续传模式 EnableCheckpoint = true, }; // 以传输字节数为基准反馈下载进度 request.ProgressType = ProgressTypeEnum.ByBytes; // 每下载1MB数据反馈下载进度 request.ProgressInterval = 1024 * 1024; // 注册下载进度回调函数 request.DownloadProgress += delegate(object sender, TransferStatus status){ // 获取下载平均速率 Console.WriteLine("AverageSpeed: {0}", status.AverageSpeed / 1024 + "KB/S"); // 获取下载进度百分比 Console.WriteLine("TransferPercentage: {0}", status.TransferPercentage); }; // 注册下载事件回调函数 request.DownloadEventHandler += delegate(object sender, ResumableDownloadEvent e){ // 获取下载事件 Console.WriteLine("EventType: {0}", e.EventType); }; GetObjectMetadataResponse response = client.DownloadFile(request); Console.WriteLine("Download File response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 断点续传下载接口是利用范围下载特性实现的,是对范围下载的封装和加强。 断点续传下载接口不仅能在失败重下时节省资源提高效率,还因其对分段进行并发下载的机制能加快下载速度,帮助用户快速完成下载业务;且其对用户透明,用户不用关心CheckpointFile文件的创建和删除、分段任务的切分、并发下载的实现等内部细节。 EnableCheckpoint参数默认是false,代表不启用断点续传模式,此时断点续传下载接口退化成对范围下载的简单封装,不会产生CheckpointFile文件。 CheckpointFile参数仅在EnableCheckpoint参数为true时有效。 父主题: 下载对象
  • 设置对象转换策略 以下代码展示了如何设置最新版本对象和历史版本对象的转换策略: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //设置对象转换策略 try { SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(); request.BucketName = "bucketname"; request.Configuration = new LifecycleConfiguration(); LifecycleRule rule1 = new LifecycleRule(); rule1.Id = "rule1"; rule1.Prefix = "prefix"; rule1.Status = RuleStatusEnum.Enabled; Transition transition = new Transition(); rule1.Transitions.Add(transition); // 指定满足前缀的对象创建30天后转换 transition.Days = 30; // 指定对象转换后的存储类型 transition.StorageClass = StorageClassEnum.Warm; NoncurrentVersionTransition noncurrentVersionTransition = new NoncurrentVersionTransition(); rule1.NoncurrentVersionTransitions.Add(noncurrentVersionTransition); // 指定满足前缀的对象成为历史版本60天后转换 noncurrentVersionTransition.NoncurrentDays = 60; // 指定历史版本对象转换后的存储类型 noncurrentVersionTransition.StorageClass = StorageClassEnum.Warm; request.Configuration.Rules.Add(rule1); SetBucketLifecycleResponse response = client.SetBucketLifecycle(request); Console.WriteLine("Set bucket lifecycle response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 设置对象过期时间 以下代码展示了如何设置最新版本对象和历史版本对象的过期时间: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 设置对象过期时间 try { SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(); request.BucketName = "bucketname"; request.Configuration = new LifecycleConfiguration(); LifecycleRule rule1 = new LifecycleRule(); rule1.Id = "rule1"; rule1.Prefix = "prefix"; rule1.Status = RuleStatusEnum.Enabled; rule1.Expiration = new Expiration(); //指定满足前缀的对象创建60天后过期 rule1.Expiration.Days = 60; // 指定满足前缀的对象成为历史版本60天后过期 rule1.NoncurrentVersionExpiration = new NoncurrentVersionExpiration(); rule1.NoncurrentVersionExpiration.NoncurrentDays = 60; request.Configuration.Rules.Add(rule1); SetBucketLifecycleResponse response = client.SetBucketLifecycle(request); Console.WriteLine("Set bucket lifecycle response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 调用设置生命周期规则后会将原有规则覆盖。
  • 设置跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.SetBucketCors设置桶的跨域规则,如果原规则存在则覆盖原规则。以下代码展示了如何设置跨域规则: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 设置桶跨域规则 try { SetBucketCorsRequest request = new SetBucketCorsRequest(); request.BucketName = "bucketname"; request.Configuration = new CorsConfiguration(); CorsRule rule = new CorsRule(); rule.Id = "20170820"; // 指定允许跨域请求的来源 rule.AllowedOrigins.Add("http://www.a.com"); rule.AllowedOrigins.Add("http://www.b.com"); // 控制在OPTIONS预取指令中Access-Control-Request-Headers头中指定的header是否被允许使用 rule.AllowedHeaders.Add("x-obs-header"); // 指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD) rule.AllowedMethods.Add(HttpVerb.HEAD); rule.AllowedMethods.Add(HttpVerb.PUT); rule.AllowedMethods.Add(HttpVerb.GET); rule.AllowedMethods.Add(HttpVerb.POST); rule.AllowedMethods.Add(HttpVerb.DELETE); // 指定允许用户从应用程序中访问的header rule.ExposeHeaders.Add("x-obs-test1"); rule.ExposeHeaders.Add("x-obs-test2"); rule.MaxAgeSeconds = 100; request.Configuration.Rules.Add(rule); SetBucketCorsResponse response = client.SetBucketCors(request); Console.WriteLine("Set bucket cors response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } AllowedOrigins、AllowedMethods、AllowedHeaders都能够最多支持一个“*”通配符。“*”表示对于所有的域来源、操作或者头域都满足。 父主题: 跨域资源共享
  • 列举桶 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.ListBuckets列举桶。以下代码展示如何获取桶列表: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 列举桶 try { ListBucketsRequest request = new ListBucketsRequest(); ListBucketsResponse response = client.ListBuckets(request); request.IsQueryLocation = true; foreach (ObsBucket bucket in response.Buckets) { Console.WriteLine("Bucket name is : {0}", bucket.BucketName); Console.WriteLine("Bucket creationDate is : {0}", bucket.CreationDate); Console.WriteLine("Bucket location is : {0}", bucket.Location); Console.WriteLine("\n"); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 获取到的桶列表将按照桶名字典顺序排列。 设置ListBucketsRequest.IsQueryLocation属性为true后,可在列举桶时查询桶的区域位置。 父主题: 管理桶
  • 清除托管配置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.DeleteBucketWebsite清除桶的托管配置。以下代码展示了如何清除托管配置: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 清除托管配置 try { DeleteBucketWebsiteRequest request = new DeleteBucketWebsiteRequest(); request.BucketName = "bucketname"; DeleteBucketWebsiteResponse response = client.DeleteBucketWebsite(request); Console.WriteLine("Delete bucket website response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 父主题: 静态网站托管
  • 流式下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 以下代码展示了如何进行流式下载: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 下载对象 try { GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", }; using (GetObjectResponse response = client.GetObject(request)) { string dest = "savepath"; if (!File.Exists(dest)) { // 将对象的数据流写入文件中 response.WriteResponseStreamToFile(dest); } Console.WriteLine("Get object response: {0}", response.StatusCode); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 响应结果GetObjectResponse中GetObjectResponse.OutputStream为响应流(System.IO.Stream类型),通过操作GetObjectResponse.OutputStream可将对象的内容读取到本地文件或者内存中;用户也可以调用OBS .NET SDK提供的GetObjectResponse.WriteResponseStreamToFile方法,将对象内容下载到本地文件中。 GetObjectResponse.OutputStream获取的响应流一定要调用GetObjectResponse.OutputStream.Close()显式关闭,否则可能造成资源泄露。 父主题: 下载对象
  • 获取下载进度 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过GetObjectRequest.DownloadProgress注册System.EventHandler回调函数来获取下载的进度。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 下载对象 try { GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", }; // 以传输字节数为基准反馈下载进度 request.ProgressType = ProgressTypeEnum.ByBytes; // 每下载1MB数据反馈下载进度 request.ProgressInterval = 1024 * 1024; // 注册下载进度回调函数 request.DownloadProgress += delegate(object sender, TransferStatus status){ // 获取下载平均速率 Console.WriteLine("AverageSpeed: {0}", status.AverageSpeed / 1024 + "KB/S"); // 获取下载进度百分比 Console.WriteLine("TransferPercentage: {0}", status.TransferPercentage); }; using (GetObjectResponse response = client.GetObject(request)) { string dest = "savepath"; if (!File.Exists(dest)) { // 将对象的数据流写入文件中 response.WriteResponseStreamToFile(dest); } Console.WriteLine("Get object response: {0}", response.StatusCode); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 支持获取下载进度的接口包括:流式下载、范围下载、异步下载和断点续传下载。 父主题: 下载对象
  • 查看桶标签 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketTagging查看桶标签。以下代码展示了如何查看桶标签: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 获取桶标签 try { GetBucketTaggingRequest request = new GetBucketTaggingRequest { BucketName = "bucketname", }; GetBucketTaggingResponse response = client.GetBucketTagging(request); foreach (Tag tag in response.Tags) { Console.WriteLine("Get bucket Tagging response Key: {0}" + tag.Key); Console.WriteLine("Get bucket Tagging response Value:{0} " + tag.Value); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 父主题: 标签管理
  • 限定条件下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 下载对象时,可以指定一个或多个限定条件,满足限定条件时则进行下载,否则抛出异常,下载对象失败。 您可以使用的限定条件如下: 参数 作用 OBS .NET SDK对应属性 If-Modified-Since 如果对象的修改时间晚于该参数值指定的时间,则返回对象内容,否则抛出异常。 GetObjectRequest.IfModifiedSince If-Unmodified-Since 如果对象的修改时间早于该参数值指定的时间,则返回对象内容,否则抛出异常。 GetObjectRequest.IfUnmodifiedSince If-Match 如果对象的ETag值与该参数值相同,则返回对象内容,否则抛出异常。 GetObjectRequest.IfMatch If-None-Match 如果对象的ETag值与该参数值不相同,则返回对象内容,否则抛出异常。 GetObjectRequest.IfNoneMatch 对象的ETag值是指对象数据的MD5校验值。 如果包含IfUnmodifiedSince并且不符合或者包含IfMatch并且不符合,抛出异常中HTTP状态码为:412 precondition failed。 如果包含IfModifiedSince并且不符合或者包含IfNoneMatch并且不符合,抛出异常中HTTP状态码为:304 Not Modified。 以下代码展示了如何进行限定条件下载: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 限定条件下载对象 try { DateTime datetime = new DateTime(2018, 3, 10, 12, 00, 00); GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", IfModifiedSince = datetime, }; using (GetObjectResponse response = client.GetObject(request)) { string dest = "savepath"; if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); } Console.WriteLine("Get object response: {0}", response.StatusCode); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 父主题: 下载对象
  • 判断对象是否存在 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.HeadObject来判断指定的对象是否存在。以下代码展示了如何使用: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 判断指定的对象是否存在 try { HeadObjectRequest request = new HeadObjectRequest() { BucketName = "bucketName", ObjectKey = "objectKey" }; bool response = client.HeadObject(request); Console.WriteLine("Head object response: {0}", response); } catch (ObsException ex) { Console.WriteLine("Exception errorcode: {0}, when head object.", ex.ErrorCode); Console.WriteLine("Exception errormessage: {0}", ex.ErrorMessage); } 父主题: 管理对象
共100000条