华为云用户手册

  • 恢复多版本归档存储对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.RestoreObject接口传入版本号(VersionId)来恢复多版本归档存储对象。 本示例用于通过设置versionId值将destbucketname桶中destobjectname的多版本归档存储对象,快速恢复为标准存储对象。 代码示例如下所示: // 初始化配置参数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.htmlstring 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; 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);} 重复恢复归档存储数据时在延长恢复有效期的同时,也将会对恢复时产生的恢复费用进行重复收取。产生的标准存储类别的对象副本有效期将会延长,并且收取延长时间段产生的标准存储副本费用。 父主题: 多版本控制
  • 删除生命周期规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.DeleteBucketLifecycle删除桶的生命周期规则。 本示例用于删除桶名为“bucketname”的生命周期规则。 代码示例如下所示: // 初始化配置参数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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 删除桶生命规则try{ DeleteBucketLifecycleRequest request = new DeleteBucketLifecycleRequest(); request.BucketName = "bucketname"; DeleteBucketLifecycleResponse response = client.DeleteBucketLifecycle(request); Console.WriteLine("Delete bucket lifecycle response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 删除生命周期规则过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 生命周期管理
  • 生命周期管理简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置生命周期规则,实现自动转换对象的存储类型、自动淘汰过期的对象,以有效利用存储特性,优化存储空间。针对不同前缀的对象,您可以同时设置多条规则。一条规则包含: 规则ID,用于标识一条规则,不能重复。 受影响的对象前缀,此规则只作用于符合前缀的对象。 最新版本对象的转换策略,指定方式为: 指定满足前缀的对象创建后第几天时转换为指定的存储类型。 直接指定满足前缀的对象转换为指定的存储类型的日期。 最新版本对象过期时间,指定方式为: 指定满足前缀的对象创建后第几天时过期。 直接指定满足前缀的对象过期日期。 历史版本对象转换策略,指定方式为: 指定满足前缀的对象成为历史版本后第几天时转换为指定的存储类型。 历史版本对象过期时间,指定方式为: 指定满足前缀的对象成为历史版本后第几天时过期。 是否生效标识。 更多关于生命周期的内容请参考生命周期管理。 对象过期后会被OBS服务端自动删除。 对象转换策略中的时间必须早于对象过期时间;历史版本对象转换策略中的时间也必须早于历史版本对象的过期时间。 桶的多版本状态必须处于Enabled或者Suspended,历史版本对象转换策略和历史版本对象过期时间配置才能生效。 父主题: 生命周期管理
  • 查看跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketCors查看桶的跨域规则。 本示例用于查看桶名为“bucketname”的跨域规则。 代码示例如下所示: // 初始化配置参数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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 查看跨域规则try{ GetBucketCorsRequest request = new GetBucketCorsRequest(); request.BucketName = "bucketname"; GetBucketCorsResponse response = client.GetBucketCors(request); foreach (CorsRule rule in response.Configuration.Rules) { Console.WriteLine("rule id is: {0}\n", rule.Id); foreach (string allowOrigin in rule.AllowedOrigins) { Console.WriteLine("allowOrigin is: {0}\n", allowOrigin); } foreach (string allowHeader in rule.AllowedHeaders) { Console.WriteLine("allowHeader is: {0}\n", allowHeader); } foreach (HttpVerb allowMethod in rule.AllowedMethods) { Console.WriteLine("allowMethod is: {0}\n", allowMethod); } foreach (string exposeHeader in rule.ExposeHeaders) { Console.WriteLine("exposeHeader is: {0}\n", exposeHeader); } Console.WriteLine("rule maxAgeSeconds is: {0}\n", rule.MaxAgeSeconds); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 查看跨域规则过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 跨域资源共享
  • 删除跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.DeleteBucketCors删除桶的跨域规则。 本示例用于删除桶名为“bucketname”的跨域规则。 代码示例如下所示: // 初始化配置参数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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 删除桶跨域规则try{ DeleteBucketCorsRequest request = new DeleteBucketCorsRequest(); request.BucketName = "bucketname"; DeleteBucketCorsResponse response = client.DeleteBucketCors(request); Console.WriteLine("Delete bucket cors response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 删除跨域规则过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 跨域资源共享
  • 查看托管配置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketWebsite查看桶的托管配置。 本示例用于查看桶名为“bucketname”的托管配置。 代码示例如下所示: // 初始化配置参数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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 查看托管配置try{ GetBucketWebsiteRequest request = new GetBucketWebsiteRequest(); request.BucketName = "bucketname"; GetBucketWebsiteResponse response = client.GetBucketWebsite(request); Console.WriteLine("GetBucketWebsite website configuration error document: {0}", response.Configuration.ErrorDocument); Console.WriteLine("GetBucketWebsite website configuration index document: {0}", response.Configuration.IndexDocument); Console.WriteLine("Get bucket website response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 查看桶托管配置过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 静态网站托管
  • 断点续传下载 开发过程中,您有任何问题可以在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.htmlstring 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.htmlstring 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);} 调用设置生命周期规则后会将原有规则覆盖。
  • 设置对象转换策略 以下代码展示了如何设置最新版本对象和历史版本对象的转换策略: // 初始化配置参数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.htmlstring 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);}
  • 删除单个对象 您可以通过ObsClient.DeleteObject删除单个对象。以下代码展示如何删除单个对象: // 初始化配置参数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.htmlstring 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 = "bucketname", ObjectKey = "objectname", }; 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);}
  • 批量删除对象 您可以通过ObsClient.DeleteObjects批量删除对象。 每次最多删除1000个对象,并支持两种响应模式:详细(verbose)模式和简单(quiet)模式。 详细模式:返回的删除成功和删除失败的所有结果,默认模式。 简单模式:只返回的删除过程中出错的结果。 以下代码展示了如何进行批量删除对象: // 初始化配置参数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.htmlstring 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"); request.AddKey("objectname2"); 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);}
  • 跨域资源共享简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 跨域是指不同 域名 之间相互访问。跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略。 由于JavaScript同源策略的限制,A域名下的JavaScript无法操作B域名或C域名下的对象。 同协议、同域名(或IP)、以及同端口视为同一个域。两个页面的协议、域名和端口(如果指定了端口)相同,则视为同源。 跨域资源共享(CORS)允许Web端的应用程序访问不属于本域的资源。OBS提供接口方便开发者控制跨域访问的权限。 更多关于跨域资源共享的内容请参考跨域资源访问。 父主题: 跨域资源共享
  • 设置跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.SetBucketCors设置桶的跨域规则,如果原规则存在则覆盖原规则。 本示例用于设置桶名为“bucketname”的跨域规则。 代码示例如下所示: // 初始化配置参数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.htmlstring 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,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 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.htmlstring 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", // 对图片依次进行缩放、旋转 ImageProcess = "image/resize,m_fixed,w_100,h_100/rotate,90", }; GetObjectResponse response = client.GetObject(request); Console.WriteLine("Get object response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 使用GetObjectRequest.ImageProcess指定图片处理参数。 图片处理参数支持级联处理,可对图片文件依次实施多条命令。 父主题: 下载对象
  • 获取对象属性 开发过程中,您有任何问题可以在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.htmlstring 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"; // 获取对象元数据 using (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);} 由于 HTTP 编码规范限制,无法发送非 ASCII 码字符,SDK 会在接收响应时使用 url 解码规则解码响应头中的信息。如您的元数据存储的 content-disposition 为“attachment; filename="%E4%B8%AD%E6%96%87.txt"”,则 SDK 获取结果为“attachment; filename="中文.txt"”。 父主题: 管理对象
  • 查看桶日志配置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketLogging查看桶日志配置。 本示例用于查看桶名为“bucketname”的日志配置。 代码示例如下所示: // 初始化配置参数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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 查看桶日志try{ GetBucketLoggingRequest request = new GetBucketLoggingRequest { BucketName = "bucketname", }; GetBucketLoggingResponse response = client.GetBucketLogging(request); Console.WriteLine("TargetBucketName is : " + response.Configuration.TargetBucketName); Console.WriteLine("TargetPrefix is : " + response.Configuration.TargetPrefix); Console.WriteLine("Get bucket logging response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 查看桶日志过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 设置访问日志
  • SDK自定义异常 SDK自定义异常(ObsException)是由ObsClient统一抛出的异常。通常是OBS服务端错误,包含OBS错误码、错误信息等,便于用户定位问题,并做出适当的处理。 ObsException通常包含以下错误信息: ObsException.StatusCode:HTTP状态码。 ObsException.ErrorCode:OBS服务端错误码。 ObsException.ErrorMessage:OBS服务端错误描述。 ObsException.RequestId:OBS服务端返回的请求ID。 ObsException.HostId:请求的服务端ID。 父主题: 异常处理
  • 删除桶标签 开发过程中,您有任何问题可以在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.htmlstring 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);} 父主题: 标签管理
  • 获取自定义元数据 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 下载对象成功后会返回对象的自定义元数据。 本示例用于获取桶名为“bucketname”,名称为“objectname”的对象自定义元数据。 代码示例如下所示: // 初始化配置参数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.htmlstring 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,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 静态网站通常仅包含静态网页,以及可能包含部分可在客户端运行的脚本,如JavaScript、Flash等。相比之下,动态网站则依赖于服务器端处理脚本,包括PHP、JSP或ASP.Net等。 您可以将静态网站文件上传至OBS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OBS上托管静态网站的目的。 第三方用户在访问您网站的时候,实际上是在访问OBS的桶中的对象。 在使用静态网站托管功能时,OBS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。 更多关于静态网站托管的内容请参考静态网站托管。 父主题: 静态网站托管
  • 关闭桶日志 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 关闭桶日志功能实际上就是调用ObsClient.SetBucketLogging将日志配置清空。 本示例用于关闭桶名为“bucketname”的日志配置。 代码示例如下所示: // 初始化配置参数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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);try{ SetBucketLoggingRequest putrequest = new SetBucketLoggingRequest(); putrequest.BucketName = "bucketname";//源桶 putrequest.Configuration = new LoggingConfiguration(); SetBucketLoggingResponse putresponse = client.SetBucketLogging(putrequest); Console.WriteLine("Delete bucket logging response: {0}", putresponse.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 关闭桶日志过程中返回的错误码含义、问题原因及处理措施可参考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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 指定前缀列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; //指定前缀 request.Prefix = "prefix"; ; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 指定起始位置列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; //指定列举的起始位置 request.Marker = "marker"; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);//列举文件夹中的所有对象try{ ListObjectsRequest request = new ListObjectsRequest(); ListObjectsResponse response; request.BucketName = "bucketname"; request.MaxKeys = 1000; // 设置文件夹对象名"dir/"为前缀 request.Prefix = "dir/"; do { response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); } request.Marker = response.NextMarker; } 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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 指定数目列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; // 只列举100个对象 request.MaxKeys = 100; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);//分页列举全部对象try{ ListObjectsRequest request = new ListObjectsRequest(); ListObjectsResponse response; request.BucketName = "bucketname"; request.MaxKeys = 100; do { response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); } request.Marker = response.NextMarker; } while (response.IsTruncated);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 多版本控制简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS支持保存一个对象的多个版本,您可以利用多版本控制,在一个桶中保留多个版本的对象。 多版本功能可以方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。 在默认情况下,OBS中新创建的桶不会开启多版本功能,向同一个桶上传同名的对象时,新上传的对象将覆盖原有的对象。 更多关于多版本控制的内容请参见多版本控制。 父主题: 多版本控制
  • 查看桶多版本状态 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketVersioning查看桶的多版本状态。 本示例用于获取桶名为“bucketname”里的多版本状态。 代码示例如下所示: // 初始化配置参数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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 查看桶的多版本状态try{ GetBucketVersioningRequest request = new GetBucketVersioningRequest(); request.BucketName = "bucketname"; GetBucketVersioningResponse response = client.GetBucketVersioning(request); Console.WriteLine("Get bucket version response: {0}", response.StatusCode); Console.WriteLine("Status: {0}", response.Configuration.Status);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 获取桶多版本状态过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 多版本控制
  • 简单列举 以下代码展示如何简单列举对象,最多返回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.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 简单列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 每次至多返回1000个对象,如果指定桶包含的对象数量大于1000,则返回结果中ListObjectsResponse.IsTruncated为true表明本次没有返回全部对象,并可通过ListObjectsResponse.NextMarker获取下次列举的起始位置。
  • 设置对象生命周期 开发过程中,您有任何问题可以在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.htmlstring 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",// 上传的本地文件路径,需要指定到具体的文件名 Expires = 30 // 上传对象时,设置对象30天后过期 }; PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode); InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest { BucketName = "bucketname", ObjectKey = "objectname", // 初始化分段上传任务时,设置合并段后生成的对象60天后过期 Expires = 60 }; InitiateMultipartUploadResponse initResponse = client.InitiateMultipartUpload(initiateRequest); Console.WriteLine("InitiateMultipartUpload status: {0}", initResponse.StatusCode); Console.WriteLine("InitiateMultipartUpload UploadId: {0}", initResponse.UploadId);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 上述方式仅支持设置以天为单位的对象过期时间,过期后的对象会被OBS服务端自动清理。 上述方式设置的对象过期时间,其优先级高于桶生命周期规则。 父主题: 上传对象
共100000条