华为云用户手册

  • 设置对象存储类型 您可以通过PutObjectRequest.StorageClass来设置对象存储类型。以下代码展示如何设置对象存储类型: // 初始化配置参数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",//上传的本地文件路径,需要指定到具体的文件名 StorageClass = StorageClassEnum.Warm,//对象存储类型 }; 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);}
  • 配置SDK日志 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS .NET SDK基于Apache Log4net开源库提供了日志功能,您可以通过加入日志配置文件开启日志功能。具体步骤如下: 在工程中添加对开发包中的日志库文件log4net.dll的引用。 将开发包中的日志配置文件Log4Net.config拷贝至工程目录中bin目录下的Debug或者Release中,确保与工程可执行文件在同一个目录下。 根据实际情况修改Log4Net.config中的日志级别。 如果不引入日志库和日志配置文件,则视为关闭日志功能,不会有日志输出。 您可以从 日志分析 章节获取更多关于SDK日志的信息。 日志文件默认放在工程可执行文件路径下,可在Log4Net.config中进行修改。 父主题: 初始化
  • 创建OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS客户端(ObsClient)是访问OBS服务的.NET客户端,它为调用者提供一系列与OBS服务进行交互的接口,用于管理、操作桶(Bucket)和对象(Object)等OBS服务上的资源。使用OBS .NET SDK向OBS发起请求,您需要初始化一个ObsClient实例,并根据需要修改ObsConfig的默认配置项。 直接使用服务地址创建OBS客户端(ObsClient),所有配置均为默认值,且后续不支持修改。 永久访问密钥(accessKey/secretKey)创建OBS客户端的代码如下 // 初始化配置参数// 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以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, "https://your-endpoint");// 使用访问OBS 临时访问密钥(accessKey/secretKey/securityToken)创建OBS客户端的代码如下 // 初始化配置参数// 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以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);string securityToken= "your_securityToken"// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey,securityToken, "https://your-endpoint");// 使用访问OBS 使用配置类(ObsConfig)创建OBS客户端(ObsClient),可自定义配置各参数,后续不支持修改,具体参数配置可参见配置OBS客户端。 // 创建ObsConfig配置类实例ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以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);// 使用访问OBS 您的工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是线程安全的,可在并发场景下使用。 父主题: 初始化
  • 创建文件夹 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS本身是没有文件夹的概念的,桶中存储的元素只有对象。创建文件夹实际上是创建了一个大小为0且对象名以“/”结尾的对象,这类对象与其他对象无任何差异,可以进行下载、删除等操作,只是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{ PutObjectRequest request = new PutObjectRequest() { BucketName = "bucketname", ObjectKey = "dir/", }; 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);} 创建文件夹本质上来说是创建了一个大小为0且对象名以“/”结尾的对象。 多级文件夹创建最后一级即可,比如src1/src2/src3/,创建src1/src2/src3/即可,无需创建src1/、src1/src2/。 父主题: 上传对象
  • 示例程序 OBS .NET SDK提供了丰富的示例程序,方便用户参考或直接使用。您可以从OBS .NET SDK开发包的demo文件夹中获取示例程序。 示例包括以下内容: 示例代码 说明 BucketOperationsSample 展示了桶相关接口的用法 ObjectOperationsSample 展示了对象相关接口的用法 TemporarySignatureSample 展示了使用URL进行授权访问的用法
  • 日志简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置访问日志记录,设置之后对于桶的访问会被记录成日志,日志存储在OBS上您指定的目标桶中。 出于分析或审计等目的,用户可以开启日志记录功能。通过访问日志记录,桶的拥有者可以深入分析访问该桶的用户请求性质、类型或趋势。 当用户开启一个桶的日志记录功能后,OBS会自动对这个桶的访问请求记录日志,并生成日志文件写入用户指定的桶(即目标桶)中。 日志文件存放位置需要在开启桶日志功能时指定,可以存放到您拥有的,且与开启日志功能的桶位于同一区域的任一存储桶,当然也包括开启日志功能的桶本身。 更多关于访问日志的内容请参考日志记录。 父主题: 设置访问日志
  • 获取服务地址 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以从这里查看OBS当前开通的服务地址和区域信息。 SDK支持带协议名和不带协议名两种方式传入服务地址,例如获取到的服务地址为“your-endpoint”,则初始化OBS客户端时传入的服务地址可以为“http://your-endpoint”、“https://your-endpoint”和“your-endpoint”三种形式。 父主题: 快速入门
  • 获取上传进度 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过PutObjectRequest.UploadProgress注册System.EventHandler回调函数来获取上传的进度。 本示例用于上传本地“localfile”文件到桶名为“bucketname”里,名称为“objectname”的对象并通过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.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",// 上传的本地文件路径,需要指定到具体的文件名 }; // 以传输字节数为基准反馈上传进度 request.ProgressType = ProgressTypeEnum.ByBytes; // 每上传1MB数据反馈上传进度 request.ProgressInterval = 1024 * 1024; // 注册上传进度回调函数 request.UploadProgress += delegate(object sender, TransferStatus status){ // 获取上传平均速率 Console.WriteLine("AverageSpeed: {0}", status.AverageSpeed / 1024 + "KB/S"); // 获取上传进度百分比 Console.WriteLine("TransferPercentage: {0}", status.TransferPercentage); }; 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);} 支持获取上传进度的接口包括:流式上传、文件上传、异步上传、上传段、追加上传和断点续传上传。 父主题: 上传对象
  • 获取下载进度 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过GetObjectRequest.DownloadProgress注册System.EventHandler回调函数来获取下载的进度。 本示例用于下载桶名为“bucketname”里,名称为“objectname”的对象并通过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.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", }; // 以传输字节数为基准反馈下载进度 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);} 支持获取下载进度的接口包括:流式下载、范围下载、异步下载和断点续传下载。 父主题: 下载对象
  • 获取桶存储类型 您可以通过ObsClient.GetBucketStoragePolicy获取桶存储类型。以下代码展示如何获取桶存储类型: // 初始化配置参数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{ GetBucketStoragePolicyRequest request = new GetBucketStoragePolicyRequest() { BucketName = "bucketName", }; GetBucketStoragePolicyResponse response = client.GetBucketStoragePolicy(request); Console.WriteLine("Get bucket storage policy response: {0}", response.StatusCode); Console.WriteLine("StorageClass: {0}", response.StorageClass);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 下载对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 本示例用于下载桶名为“bucketname”里,名称为“objectname”的对象。 代码示例如下所示: GetObjectRequest request = new GetObjectRequest(){ BucketName = "bucketname", ObjectKey = "objectname",};using (GetObjectResponse response = client.GetObject(request)){ //保存到本地文件 string dest = "savepath"; if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); }} 更多下载对象的信息,请参见下载对象。 父主题: 快速入门
  • 设置桶存储类型 您可以通过ObsClient.SetBucketStoragePolicy设置桶存储类型。以下代码展示如何设置桶存储类型: // 初始化配置参数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{ SetBucketStoragePolicyRequest request = new SetBucketStoragePolicyRequest { BucketName = "bucketname", StorageClass = StorageClassEnum.Cold, }; SetBucketStoragePolicyResponse response = client.SetBucketStoragePolicy(request); Console.WriteLine("Set bucket storage policy response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 对象上传简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 在OBS中,用户操作的基本数据单元是对象。OBS .NET SDK提供了丰富的对象上传接口,可以通过以下方式上传对象: 流式上传 文件上传 异步上传 分段上传 追加上传 断点续传上传 SDK支持上传0KB~5GB的对象。流式上传、文件上传和追加上传的内容大小不能超过5GB;当上传较大文件时,请使用分段上传;分段上传每段内容大小不能超过5GB。 如果上传的对象权限设置为匿名用户读取权限,对象上传成功后,匿名用户可通过链接地址访问该对象数据。对象链接地址格式为:https://桶名. 域名 /文件夹目录层级/对象名。如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 父主题: 上传对象
  • 范围下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 如果只需要下载对象的其中一部分数据,可以使用范围下载,下载指定范围的数据。 如果指定的下载范围是0~1000,则返回第0到第1000个字节的数据,包括第1000个,共1001字节的数据,即[0, 1000]。如果指定的范围无效,则返回整个对象的数据。 本示例用于下载桶名为“bucketname”里,名称为“objectname”对象的[10,200]范围对应的内容。 示例代码如下: // 初始化配置参数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{ ByteRange byteRange = new ByteRange(10, 200); GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", ByteRange = byteRange, }; 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,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 桶是OBS全局命名空间,相当于数据的容器、文件系统的根目录,可以存储若干对象。以下代码展示如何新建一个桶: CreateBucketRequest request = new CreateBucketRequest();request.BucketName = "bucketname";client.CreateBucket(request); 桶的名字是全局唯一的,所以您需要确保不与已有的桶名称重复。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 更多创建桶的信息,请参见创建桶。 创建桶时,如果使用的终端节点归属于默认区域华北-北京一(cn-north-1),则可以不指定区域;如果使用的终端节点归属于其他区域,则必须指定区域,且指定的区域必须与终端节点归属的区域一致。当前有效的区域名称可从这里查询。 您可以使用带参数创建方式,在创建桶时,指定桶的区域位置。 父主题: 快速入门
  • 异步下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.BeginGetObject和ObsClient.EndGetObject,进行异步下载对象。 本示例用于异步下载桶名为“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", }; client.BeginGetObject(request, delegate(IAsyncResult ar){ try { using (GetObjectResponse response = client.EndGetObject(ar)) { 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); } }, null); }catch (ObsException ex){ Console.WriteLine("Message: {0}", ex.Message);} 更多下载对象的信息,请参见下载对象。 父主题: 下载对象
  • 流式上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 流式上传使用System.IO.Stream作为对象的数据源。您可以通过ObsClient.PutObject上传您的数据流到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{ String str = "Hello OBS"; Stream stream = new MemoryStream(System.Text.Encoding.Default.GetBytes(str)); PutObjectRequest request = new PutObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", InputStream = stream, }; 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);} 大文件上传建议使用分段上传。 上传的内容大小不能超过5GB。 父主题: 上传对象
  • 获取桶配额 您可以通过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.htmlstring 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);}
  • 上传段 初始化一个分段上传任务之后,可以根据指定的对象名和UploadId来分段上传数据。每一个上传的段都有一个标识它的号码——分段号(PartNumber,范围是1~10000)。对于同一个UploadId,该分段号不但唯一标识这一段数据,也标识了这段数据在整个对象内的相对位置。如果您用同一个分段号上传了新的数据,那么OBS上已有的这个段号的数据将被覆盖。除了最后一段以外,其他段的大小范围是100KB~5GB;最后段大小范围是0~5GB。每个段不需要按顺序上传,甚至可以在不同进程、不同机器上上传,OBS会按照分段号排序组成最终对象。 您可以通过ObsClient.UploadPart上传段。 上传段接口要求除最后一段以外,其他的段大小都要大于100KB。但是上传段接口并不会立即校验上传段的大小(因为不知道是否为最后一块);只有调用合并段接口时才会校验。 OBS会将服务端收到段数据的ETag值(段数据的MD5值)返回给用户。 分段号的范围是1~10000。如果超出这个范围,OBS将返回400 Bad Request错误。 OBS 3.0的桶支持最小段的大小为100KB,OBS 2.0的桶支持最小段的大小为5MB。请在OBS 3.0的桶上执行分段上传操作。
  • 列举分段上传任务 您可以通过ObsClient.ListMultipartUploads列举分段上传任务。列举分段上传任务可设置的参数如下: 参数 作用 OBS .NET SDK对应属性 BucketName 桶名。 ListMultipartUploadsRequest.BucketName Prefix 限定返回的分段上传任务中的对象名必须带有prefix前缀。 ListMultipartUploadsRequest.Prefix Delimiter 用于对分段上传任务中的对象名进行分组的字符。对于对象名中包含Delimiter的任务,其对象名(如果请求中指定了Prefix,则此处的对象名需要去掉Prefix)中从首字符至第一个Delimiter之间的字符串将作为一个分组并作为CommonPrefix返回。 ListMultipartUploadsRequest.Delimiter MaxUploads 列举分段上传任务的最大数目,取值范围为1~1000,当超出范围时,按照默认的1000进行处理。 ListMultipartUploadsRequest.MaxUploads KeyMarker 表示列举时返回指定的keyMarker之后的分段上传任务。 ListMultipartUploadsRequest.KeyMarker UploadIdMarker 只有与KeyMarker参数一起使用时才有意义,用于指定返回结果的起始位置,即列举时返回指定KeyMarker的UploadIdMarker之后的分段上传任务。 ListMultipartUploadsRequest.UploadIdMarker 简单列举分段上传任务 // 初始化配置参数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{ ListMultipartUploadsRequest listMultipartUploadsRequest = new ListMultipartUploadsRequest(); listMultipartUploadsRequest.BucketName = "bucketname"; ListMultipartUploadsResponse listMultipartUploadsResponse = client.ListMultipartUploads(listMultipartUploadsRequest); Console.WriteLine("ListMultipartUploadsResponse status code: " + listMultipartUploadsResponse.StatusCode); foreach (MultipartUpload upload in listMultipartUploadsResponse.MultipartUploads) { Console.WriteLine("ObjectKey {0}: " , upload.ObjectKey); Console.WriteLine("Initiated {0}: " , upload.Initiated); Console.WriteLine("\n"); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 列举分段上传任务至多返回1000个任务信息,如果指定的桶包含的分段上传任务数量大于1000,则ListMultipartUploadsResponse.isTruncated为true表明本次没有返回全部结果,并可通过ListMultipartUploadsResponse.NextKeyMarker和ListMultipartUploadsResponse.NextUploadIdMarker获取下次列举的起点。 如果想获取指定桶包含的所有分段上传任务,可以采用分页列举的方式。 分页列举全部分段上传任务 // 初始化配置参数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{ ListMultipartUploadsRequest request = new ListMultipartUploadsRequest(); request.BucketName = "bucketname"; ListMultipartUploadsResponse response; do { response = client.ListMultipartUploads(request); Console.WriteLine("ListMultipartUploadsResponse status code: " + response.StatusCode); foreach (MultipartUpload upload in response.MultipartUploads) { Console.WriteLine("ObjectKey {0}: " , upload.ObjectKey); Console.WriteLine("Initiated {0}: " , upload.Initiated); Console.WriteLine("\n"); } request.KeyMarker = response.NextKeyMarker; request.UploadIdMarker = response.NextUploadIdMarker; } while (response.IsTruncated);}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.htmlstring 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的字符串形式。
  • 初始化分段上传任务 使用分段上传方式传输数据前,必须先通知OBS初始化一个分段上传任务。该操作会返回一个OBS服务端创建的全局唯一标识(UploadId),用于标识本次分段上传任务。您可以根据这个唯一标识来发起相关的操作,如取消分段上传任务、列举分段上传任务、列举已上传的段等。 您可以通过ObsClient.InitiateMultipartUpload初始化一个分段上传任务。 用InitiateMultipartUploadRequest指定上传对象的名称和所属桶。 在InitiateMultipartUploadRequest中,您可以设置对象MIME类型、对象存储类型、对象自定义元数据等对象属性。 InitiateMultipartUploadResponse.UploadId返回分段上传任务的全局唯一标识(UploadId),在后面的操作中将用到它。
  • 取消分段上传任务 分段上传任务可以被取消,当一个分段上传任务被取消后,就不能再使用其UploadId做任何操作,已经上传段也会被OBS服务端删除。 采用分段上传方式上传对象过程中或上传对象失败后会在桶内产生段,这些段会占用您的存储空间,您可以通过取消该分段上传任务来清理掉不需要的段,节约存储空间。 您可以通过ObsClient.AbortMultipartUpload取消分段上传任务,示例代码如下: // 初始化配置参数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{ AbortMultipartUploadRequest request = new AbortMultipartUploadRequest { BucketName = "bucketname", ObjectKey = "objectname", UploadId = "uploadId",//待取消的分段上传任务的Id }; AbortMultipartUploadResponse response = client.AbortMultipartUpload(request); Console.WriteLine("Abort multipart upload response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 列举已上传的段 您可使用ObsClient.ListParts列举出某一分段上传任务所有已经上传成功的段。 该接口可设置的参数如下: 参数 作用 OBS .NET SDK对应属性 BucketName 分段上传任务所属的桶名。 ListPartsRequest.BucketName ObjectKey 分段上传任务所属的对象名。 ListPartsRequest.ObjectKey UploadId 分段上传任务全局唯一标识,从InitiateMultipartUpload返回的结果获取。 ListPartsRequest.UploadId MaxParts 表示列举已上传的段返回结果最大段数目,即分页时每一页中段数目。 ListPartsRequest.MaxParts PartNumberMarker 表示待列出段的起始位置,只有Part Number大于该参数的段会被列出。 ListPartsRequest.PartNumberMarker 简单列举 // 初始化配置参数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{ ListPartsRequest request = new ListPartsRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; request.UploadId = "uploadId"; ListPartsResponse response = client.ListParts(request); Console.WriteLine("List parts response: {0}", response.StatusCode); foreach (PartDetail part in response.Parts) { Console.WriteLine("PartNumber: " + part.PartNumber); Console.WriteLine("Size: " + part.Size); Console.WriteLine("ETag: " + part.ETag); Console.WriteLine("LastModified: " + part.LastModified); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 列举段至多返回1000个段信息,如果指定的Upload ID包含的段数量大于1000,则返回结果中ListPartsResult.isTruncated为true表明本次没有返回全部段,并可通过ListPartsRespon.NextPartNumberMarker获取下次列举的起始位置。 列举所有段 由于ObsClient.ListParts只能列举至多1000个段,如果段数量大于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{ ListPartsRequest request = new ListPartsRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; request.UploadId = "uploadId"; ListPartsResponse response; do { response = client.ListParts(request); Console.WriteLine("List parts response: {0}", response.StatusCode); foreach (PartDetail part in response.Parts) { Console.WriteLine("PartNumber: " + part.PartNumber); Console.WriteLine("Size: " + part.Size); Console.WriteLine("ETag: " + part.ETag); Console.WriteLine("LastModified: " + part.LastModified); } request.PartNumberMarker = response.NextPartNumberMarker; } while (response.IsTruncated);}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.htmlstring 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,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 本示例用于上传字符串“Hello OBS”到桶名为“bucketname”里,名称为“objectname”。 代码示例如下所示: PutObjectRequest request = new PutObjectRequest{ BucketName = "bucketname", ObjectKey = "objectname", InputStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello OBS"))};client.PutObject(request); 更多上传对象的信息,请参见上传对象。 父主题: 快速入门
  • 分段复制 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 分段复制是分段上传的一种特殊情况,即分段上传任务中的段通过复制OBS指定桶中现有对象(或对象的一部分)来实现。您可以通过ObsClient.CopyPart来复制段。 本示例用于分段复制桶名为“sourcebucketname”里的“sourceobjectname”对象到桶名为“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{ CopyPartRequest request = new CopyPartRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; request.UploadId = "uploadId"; request.PartNumber = 1; request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; CopyPartResponse response = client.CopyPart(request); Console.WriteLine("Copy part response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 父主题: 上传对象
  • 获取桶存量信息 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 桶存量信息包括桶已使用的空间大小以及桶包含的对象个数。 您可以通过ObsClient.GetBucketStorageInfo获取桶的存量信息。 本示例用于获取桶名为“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{ GetBucketStorageInfoRequest request = new GetBucketStorageInfoRequest { BucketName = "bucketname", }; GetBucketStorageInfoResponse response = client.GetBucketStorageInfo(request); Console.WriteLine("Get bucket storageinfo response: {0}", response.StatusCode); Console.WriteLine("ObjectNumber: {0}", response.ObjectNumber); Console.WriteLine("Size: {0}", response.Size);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 获取桶存量信息过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 管理桶
  • 文件上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 文件上传使用本地文件作为对象的数据源。 本示例用于上传本地“localfile”文件到桶名为“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{ PutObjectRequest request = new PutObjectRequest() { BucketName = "bucketname", //待传入目标桶名 ObjectKey = "objectname", //待传入对象名(对象名是对象在桶中的完整路径,如folder/test.txt,路径中不包含桶名) FilePath = "localfile",//待上传的本地文件路径,需要指定到具体的文件名 }; 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);} 上传的内容大小不能超过5GB。 父主题: 上传对象
  • 列举桶 开发过程中,您有任何问题可以在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.htmlstring 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后,可在列举桶时查询桶的区域位置。 父主题: 管理桶
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全