华为云用户手册

  • 返回结果(InterfaceResult) 字段名 类型 说明 RequestId String OBS服务端返回的请求ID。 DeleteMarker String 标识删除的对象是否是删除标记。 LastModified String 对象的最近一次修改时间。 ContentLength String 对象数据的长度。 CacheControl String 响应中的Cache-Control头。 ContentDisposition String 响应中的Content-Disposition头。 ContentEncoding String 响应中的Content-Encoding头 ContentLanguage String 响应中的Content-Language头 ContentType String 对象的MIME类型。 Expires String 响应中的Expires头。 ETag String 对象的ETag值。 VersionId String 对象的版本号。 WebsiteRedirectLocation String 当桶设置了Website配置,该参数指明对象的重定向地址。 StorageClass String 对象的存储类型,当对象存储类型是标准存储时,该值为空。 Restore String 归档存储类型对象的取回状态。 AllowOrigin String 如果请求中的Origin满足桶的CORS规则,则返回CORS规则中的AllowedOrigin。 AllowHeader String 如果请求的RequestHeader满足桶的CORS规则,则返回CORS规则中的AllowedHeader。 AllowMethod String 桶CORS规则中的AllowedMethod。 ExposeHeader String 桶CORS规则中的ExposeHeader。 MaxAgeSeconds String 桶CORS规则中的MaxAgeSeconds。 SseKms String SSE-KMS方式的算法。 SseKmsKey String SSE-KMS方式的主密钥。 SseC String SSE-C方式的算法。 SseCKeyMd5 String SSE-C方式的密钥的MD5值。 Expiration String 对象的详细过期信息。 Content String 或 stream.Readable 对象的内容。当设置了SaveAsFile时该值为空;当设置了SaveAsStream且为true时该值为stream.Readable对象;当SaveAsFile和SaveAsStream都未设置时为Buffer对象。 Metadata Object 对象自定义元数据。
  • 请求参数 字段名 类型 约束 说明 Bucket String 必选 桶名。 Key String 必选 对象名。 VersionId String 可选 对象的版本号。 ProgressCallback Function 可选 获取下载进度的回调函数。 说明: 该回调函数依次包含三个参数:已下载字节数、总字节数、已使用的时间(单位:秒)。 IfMatch String 可选 如果对象的ETag值与该参数值相同,则返回对象内容,否则返回异常码。 IfModifiedSince String 可选 如果对象的修改时间晚于该参数值指定的时间,则返回对象内容,否则返回异常码。该参数值必须符合http://www.ietf.org/rfc/rfc2616.txt规定的HTTP时间格式。 IfNoneMatch String 可选 如果对象的ETag值与该参数值不相同,则返回对象内容,否则返回异常码。 IfUnmodifiedSince String 可选 如果对象的修改时间早于该参数值指定的时间,则返回对象内容,否则返回异常码。该参数值必须符合http://www.ietf.org/rfc/rfc2616.txt规定的HTTP时间格式。 Range String 可选 指定下载的范围,取值区间:[0,对象长度-1],格式:bytes=x-y。如果Range的最大长度超出对象长度-1,仍旧取对象长度-1。 Origin String 可选 预请求指定的跨域请求Origin(通常为域名)。 RequestHeader String 可选 跨域请求可以使用的HTTP头域。 ResponseCacheControl String 可选 重写响应中的Cache-Control头。 ResponseContentDisposition String 可选 重写响应中的Content-Disposition头。 ResponseContentEncoding String 可选 重写响应中的Content-Encoding头。 ResponseContentLanguage String 可选 重写响应中的Content-Language头。 ResponseContentType String 可选 重写响应中的Content-Type头。 ResponseExpires String 可选 重写响应中的Expires头。 ImageProcess String 可选 图片处理参数。 SaveAsFile String 可选 下载对象的目标路径,包含文件名。 SaveAsStream Boolean 可选 是否将对象以流(stream.Readable)的形式返回。 SseC String 可选 以SSE-C方式解密对象,支持的值: AES256 SseCKey Buffer 可选 SSE-C方式下解密的密钥,由AES256算法算出。 SaveAsFile和SaveAsStream不能同时使用。 如果包含IfUnmodifiedSince并且不符合或者包含IfMatch并且不符合,抛出异常中HTTP状态码为:412 precondition failed。 如果包含IfModifiedSince并且不符合或者包含IfNoneMatch并且不符合,抛出异常中HTTP状态码为:304 Not Modified。
  • 返回结果(InterfaceResult) 字段名 类型 说明 RequestId String OBS服务端返回的请求ID。 MetadataDirective String 元数据操作指示符。 取值为REPLACE_NEW或REPLACE。 CacheControl String 指定Object被下载时的网页的缓存行为。 Content-Disposition String 对象的ETag值。 Content-Encoding String 对象的版本号。 WebsiteRedirectLocation String 当桶设置了Website配置,该参数指明对象的重定向地址。 StorageClass String 对象的存储类型,当对象存储类型是标准存储时,该值为空。 Content-Language String 如果请求中的Origin满足桶的CORS规则,则返回CORS规则中的AllowedOrigin。 Expires String 如果请求的AccessControlRequestHeaders满足桶的CORS规则,则返回CORS规则中的AllowedHeader。 Metadata Object 对象自定义元数据。
  • 请求参数 字段名 类型 约束 说明 Bucket String 必选 桶名。 Key String 必选 对象名。 VersionId String 可选 对象的版本号。 Origin String 可选 预请求指定的跨域请求Origin(通常为域名)。 RequestHeader String 可选 跨域请求可以使用的HTTP头域。 MetadataDirective String 必选 元数据操作指示符。 取值为REPLACE_NEW或REPLACE。 REPLACE_NEW表示:对于已经存在值的元数据进行替换,不存在值的元数据进行赋值,未指定的元数据保持不变。 REPLACE表示:使用当前请求中携带的头域完整替换,未指定的元数据(本表中除StorageClass的其它元数据)会被删除。 CacheControl String 可选 指定Object被下载时的网页的缓存行为。 ContentDisposition String 可选 指定Object被下载时的名称。 ContentLanguage String 可选 指定Object被下载时的内容语言格式。 ContentEncoding String 可选 指定Object被下载时的内容编码格式。 ContentType String 可选 Object文件类型。 Expires String 可选 请求过期时间。 Metadata Object 可选 对象自定义元数据。 StorageClass String 可选 指定对象的存储类型。 说明:存储类型有3种:STANDARD(标准存储)、WARM(低频访问存储)、COLD(归档存储)。因此这里可配置的值有:STANDARD、WARM和COLD,注意大小写敏感。 WebsiteRedirectLocation String 可选 当桶设置了Website配置,可以将获取这个对象的请求重定向到桶内另一个对象或一个外部的URL
  • 参数描述 字段名 类型 约束 说明 access_key_id String 可选 访问密钥中的AK。 secret_access_key String 可选 访问密钥中的SK。 server String 必选 连接OBS的服务地址。可包含协议类型、域名、端口号。示例:https://your-endpoint:443。 您可以从这里查看OBS当前开通的服务地址。 max_retry_count Number 可选 HTTP/HTTPS连接异常时的请求重试次数。默认为3次。 https_agent Object 可选 配置客户端网络https代理信息。 http_agent Object 可选 配置客户端网络http代理信息。 timeout Number 可选 HTTP/HTTPS请求超时时间(单位:秒)。默认为60秒。 ssl_verify Boolean 或 String 可选 验证服务端证书参数。可能的取值: 服务端pem格式根证书文件路径; true:使用默认的CAs验证服务端证书; false:表示不验证服务端证书。 默认为false。 long_conn_param Number 可选 长连接模式参数(单位:秒)。当该参数大于等于0时,开启长连接模式,并将该参数作为TCP Keep-Alive数据包的初始延迟。 默认为空,代表关闭长连接模式。 is_cname Boolean 可选 是否通过自定义域名访问OBS服务。默认为false。
  • 代码样例 // 引入obs库 // 使用npm安装 var ObsClient = require('esdk-obs-nodejs'); var ProxyAgent = require('proxy-agent'); // 使用源码安装 // var ObsClient = require('./lib/obs'); // 创建ObsClient实例 var obsClient = new ObsClient({ //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, //这里以华北-北京四为例,其他地区请按实际情况填写 server: 'https://obs.cn-north-4.myhuaweicloud.com' max_retry_count : 1, timeout : 20, ssl_verify : false, long_conn_param : 0, http_agent : new ProxyAgent('*** Provide your Network proxy ***') // 配置网络代理 });
  • 修订记录 发布日期 修订记录 2021-11-30 第九次正式发布。 修改章节 4.1 创建桶,新增AzRedundancy字段。 2021-03-30 第八次正式发布。 更新2.1 OBS客户端初始化章节中代理配置说明。 2019-03-30 第七次正式发布。 增加章节: 简介。 2019-03-05 第六次正式发布。 2019-01-17 第五次正式发布。 修改章节: OBS客户端初始化,修改代码样例。 2018-08-31 第四次正式发布。 新增章节: 追加上传 生成带授权信息的表单上传参数 2018-03-31 第三次正式发布。 新增章节: 预定义常量 设置桶存储类型 获取桶存储类型 修改章节: 生成带授权信息的URL,修改返回结果参数和示例代码。 设置桶的生命周期配置,新增Transitions字段和NoncurrentVersionTransitions字段。 获取桶的生命周期配置,新增Transitions字段和NoncurrentVersionTransitions字段。 上传对象,新增StorageClass字段。 下载对象,新增ImageProcess字段。 复制对象,新增StorageClass字段。 初始化分段任务,新增StorageClass字段。 2017-11-30 第二次正式发布。 新增章节: 断点续传上传 断点续传下载 2017-10-31 第一次正式发布。
  • 功能说明 按照用户指定的桶名创建一个新桶。新创建桶的桶名在OBS中必须是唯一的。如果是同一个用户重复创建同一区域的同名桶时返回HTTP状态码200。除此以外的其他场景重复创建同名桶返回HTTP状态码409,表明桶已存在。一个用户可以拥有的桶的数量不能超过100个。 ObsClient的桶相关操作接口函数均支持首字母大小写,如ObsClient.createBucket和ObsClient.CreateBucket是相同的函数。
  • 请求参数 字段名 类型 约束 说明 Bucket String 必选 桶名。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 ACL String 可选 创桶时可指定的预定义访问策略。 StorageClass String 可选 创桶时可指定的桶的存储类型。 Location String 如果请求的OBS服务地址所在区域为默认区域,则可为空,否则为必选。 桶所在的区域。 该参数定义了桶将会被创建在哪个区域,如果使用的终端节点归属于默认区域华北-北京一(cn-north-1),可以不携带此参数;如果使用的终端节点归属于其他区域,则必须携带此参数。当前有效的区域名称可从这里查询。有关OBS区域和终端节点的更多信息,请参考地区和终端节点。 AzRedundancy String 可选 桶AZ存储类型。 如果不携带该值,则默认为单AZ存储。 如果设置为多AZ存储,值为"3az"。 如果Location不支持多AZ,则该桶的存储类型仍为单AZ。
  • 返回结果(InterfaceResult) 字段名 类型 说明 RequestId String OBS服务端返回的请求ID。 DeleteMarker String 标识删除的对象是否是删除标记。 LastModified String 对象的最近一次修改时间。 CacheControl String 响应中的Cache-Control头。 ContentDisposition String 响应中的Content-Disposition头。 ContentEncoding String 响应中的Content-Encoding头。 ContentLanguage String 响应中的Content-Language头。 ContentType String 对象的MIME类型。 Expires String 响应中的Expires头。 ETag String 对象的ETag值。 VersionId String 对象的版本号。 WebsiteRedirectLocation String 当桶设置了Website配置,该参数指明对象的重定向地址。 StorageClass String 对象的存储类型,当对象存储类型是标准存储时,该值为空。 Restore String 归档存储类型对象的取回状态。 SseKms String SSE-KMS方式的算法。 SseKmsKey String SSE-KMS方式的主密钥。 SseC String SSE-C方式的算法。 SseCKeyMd5 String SSE-C方式的密钥的MD5值。 Expiration String 对象的详细过期信息。 Metadata Object 对象自定义元数据。
  • 请求参数 字段名 类型 约束 说明 Bucket String 必选 桶名。 Key String 必选 对象名。 DownloadFile String 可选 下载对象的本地文件全路径。当该值为空时,默认为当前程序的运行目录。 PartSize Number 可选 分段大小,单位字节,取值范围是100KB~5GB,默认为5MB。 TaskNum Number 可选 分段下载时的最大并发数,默认为20。 ProgressCallback Function 可选 获取下载进度的回调函数。 说明: 该回调函数依次包含三个参数:已下载的字节数、总字节数、已使用的时间(单位:秒)。 ResumeCallback Function 可选 获取取消断点续传控制参数的回调函数。 说明: 该回调函数有一个参数:取消断点续传下载任务控制参数; 可以调用取消断点续传下载任务控制参数的cancel方法来暂停断点续传下载任务。 EnableCheckpoint Boolean 可选 是否开启断点续传模式,默认为false,表示不开启。 CheckpointFile String 可选 记录下载进度的文件,只在断点续传模式下有效。当该值为空时,默认与下载对象的本地文件路径同目录。 VersionId String 可选 对象的版本号。 IfModifiedSince String 可选 如果对象的修改时间晚于该参数值指定的时间,则返回对象内容,否则返回异常码。 IfUnmodifiedSince String 可选 如果对象的修改时间早于该参数值指定的时间,则返回对象内容,否则返回异常码。 IfMatch String 可选 如果对象的ETag值与该参数值相同,则返回对象内容,否则返回异常码。 IfNoneMatch String 可选 如果对象的ETag值与该参数值不相同,则返回对象内容,否则返回异常码。 SseC String 可选 以SSE-C方式解密对象,支持的值: AES256 SseCKey String 可选 SSE-C方式下解密的密钥,由AES256算法算出。
  • 返回结果(InterfaceResult) 字段名 类型 说明 RequestId String OBS服务端返回的请求ID。 LastModified String 对象的最近一次修改时间。 ContentLength String 对象数据的长度。 ContentType String 对象的MIME类型。 ETag String 对象的ETag值。 VersionId String 对象的版本号。 WebsiteRedirectLocation String 当桶设置了Website配置,该参数指明对象的重定向地址。 StorageClass String 对象的存储类型,当对象存储类型是标准存储时,该值为空。 Restore String 归档存储类型对象的取回状态。 AllowOrigin String 如果请求中的Origin满足桶的CORS规则,则返回CORS规则中的AllowedOrigin。 AllowHeader String 如果请求的AccessControlRequestHeaders满足桶的CORS规则,则返回CORS规则中的AllowedHeader。 AllowMethod String 桶CORS规则中的AllowedMethod。 ExposeHeader String 桶CORS规则中的ExposeHeader。 MaxAgeSeconds String 桶CORS规则中的MaxAgeSeconds。 SseKms String SSE-KMS方式的算法。 SseKmsKey String SSE-KMS方式的主密钥。 SseC String SSE-C方式的算法。 SseCKeyMd5 String SSE-C方式的密钥的MD5值。 Expiration String 对象的详细过期信息。 Metadata Object 对象自定义元数据。 ObjectType String 对象是否可被追加上传。 NextPosition String 下次追加上传的位置。
  • 请求参数 字段名 类型 约束 说明 Bucket String 必选 桶名。 Key String 必选 对象名。 VersionId String 可选 对象的版本号。 Origin String 可选 预请求指定的跨域请求Origin(通常为域名)。 RequestHeader String 可选 跨域请求可以使用的HTTP头域。 SseC String 可选 以SSE-C方式解密对象,支持的值: AES256 SseCKey Buffer 可选 SSE-C方式下解密的密钥,由AES256算法算出。
  • 请求参数 字段名 类型 约束 说明 Bucket String 必选 桶名。 Key String 必选 对象名。 VersionId String 可选 对象的版本号。 ACL String 可选 预定义访问策略。 Owner Object 可选 对象的所有者。 ID String 必选 对象所有者的DomainId。 Delivered Boolean 可选 桶的ACL是否向桶内对象传递。 Grants Array 可选 被授权用户权限信息列表。 Grantee Object 必选 被授权用户。 Type String 必选 被授权的用户类型。 ID String 如果Type为“CanonicalUser”则必选,否则必须为空 被授权用户的DomainId。 URI String 如果Type为“Group”则必选,否则必须为空 被授权的用户组。 Permission String 必选 被授予的权限。 Owner和Grants必须配套使用,且与ACL互斥。当设置了这两个字段时,不能设置ACL;反之,当设置了ACL时,不能设置Owner和Grants。 Owner、Grants与ACL不能全为空。
  • 返回结果(InterfaceResult) 字段名 类型 说明 RequestId String OBS服务端返回的请求ID。 ETag String 对象的ETag值。 NextPosition String 下次追加上传的位置。 StorageClass String 对象的存储类型,当对象存储类型是标准存储时,该值为空。 SseKms String SSE-KMS方式的算法。 SseKmsKey String SSE-KMS方式的密钥。 SseC String SSE-C方式的算法。 SseCKeyMd5 String SSE-C方式的密钥的MD5值。
  • 请求参数 字段名 类型 约束 说明 Bucket String 必选 桶名。 Key String 必选 对象名。 Position Number 必选 追加上传的位置,第一次追加上传时必须为0。 ACL String 可选 创建对象时可指定的预定义访问策略。 StorageClass String 可选 创建对象时可指定的对象的存储类型。 Body String 或 stream.Readable 可选 待上传对象的内容,支持字符串和stream.Readable对象。 Offset Number 可选 当设置了SourceFile时有效,代表源文件中某一分段的起始偏移大小,默认值为0, 单位为字节。 SourceFile String 可选 待上传对象的源文件路径。 Metadata Object 可选 待上传对象的自定义元数据。 WebsiteRedirectLocation String 可选 当桶设置了Website配置,该参数指明对象的重定向地址。 Expires Number 可选 待上传对象的生命周期,单位:天。 SuccessActionRedirect String 可选 上传对象成功后的重定向的地址。 ContentType String 可选 待上传对象的MIME类型。 ContentLength Number 可选 当设置了SourceFile时有效,代表待上传对象数据的长度。 ContentMD5 String 可选 待上传对象数据的MD5值(经过Base64编码),提供给OBS服务端,校验数据完整性。 SseKms String 可选 以SSE-KMS方式加密对象,支持的值: kms SseKmsKey String 可选 SSE-KMS方式下加密的主密钥,可为空。 SseC String 可选 以SSE-C方式加密对象,支持的值: AES256 SseCKey Buffer 可选 SSE-C方式下加密的密钥,由AES256算法得到。 Body与SourceFile不能同时使用。 当Body与SourceFile都为空时,上传对象的大小为0字节。
  • 参数描述 字段名 类型 约束 说明 key string 必选 访问密钥中的AK。 secret string 必选 访问密钥中的SK。 endpoint string 必选 连接OBS的服务地址。包含协议类型、域名(或IP)、端口号。示例:https://your-endpoint:443。 您可以从这里查看OBS当前开通的服务地址。 ssl_verify boolean 或 string 可选 验证服务端证书参数。可能的取值: 服务端pem格式根证书文件路径; true:使用默认的CAs验证服务端证书; false:表示不验证服务端证书。 默认为false。 max_retry_count integer 可选 HTTP/HTTPS连接异常时的请求重试次数。默认为3次。 socket_timeout integer 可选 Socket层传输数据的超时时间(单位:秒)。默认为60秒。 connect_timeout integer 可选 建立HTTP/HTTPS连接的超时时间(单位:秒)。默认为60秒。 chunk_size integer 可选 读socket流时的块大小(单位:字节)。默认为65536字节。
  • 返回结果(InterfaceResult) 字段名 类型 说明 RequestId String OBS服务端返回的请求ID。 Size String 桶的空间大小。 ObjectNumber String 桶内对象个数。 StandardSize String 返回标准存储类型存量大小 StandardObjectNumber String 返回标准存储类型对象个数 WarmSize String obs请求时返回低频存储类型存量大小 WarmObjectNumber String obs请求时返回低频存储类型对象个数 ColdSize String obs请求时返回归档存储类型存量大小 ColdObjectNumber String obs请求时返回归档存储类型对象个数 DeepArchiveSize String 返回深度归档存储类型存量大小 DeepArchiveObjectNumber String 返回深度归档存储类型对象个数 HighPerformanceSize String 返回高性能存储类型存量大小 HighPerformanceObjectNumber String 返回高性能存储类型对象个数 Standard_IASize String s3请求时返回低频存储类型存量大小 Standard_IAObjectNumber String s3请求时返回低频存储类型对象个数 GlacierSize String s3请求时返回归档存储类型存量大小 GlacierObjectNumber String s3请求时返回归档存储类型对象个数
  • 恢复多版本归档存储对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.restoreObject接口传入版本号(versionId)来恢复多版本归档存储对象,示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); RestoreObjectRequest request = new RestoreObjectRequest("bucketname", "objectname", 1); // 使用快速恢复方式,恢复多版本对象 request.setRestoreTier(RestoreTierEnum.EXPEDITED); request.setVersionId("versionid"); obsClient.restoreObject(request); 父主题: 多版本控制
  • 透传访问密钥 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS Android SDK提供了直接在接口方法中透传AK和SK的OBS客户端(SecretFlexibleObsClient)。示例代码如下: String endPoint = "https://your-endpoint"; // 创建ObsConfiguration配置类实例 ObsConfiguration config = new ObsConfiguration(); config.setEndPoint(endPoint); // 创建SecretFlexibleObsClient实例 SecretFlexibleObsClient obsClient = new SecretFlexibleObsClient(config); // 使用访问OBS // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak1 = System.getenv("ACCESS_KEY_ID1"); String sk1 = System.getenv("SECRET_ACCESS_KEY_ID1"); obsClient.listBuckets(ak1, sk1); String ak2 = System.getenv("ACCESS_KEY_ID2"); String sk2 = System.getenv("SECRET_ACCESS_KEY_ID2"); obsClient.listBuckets(ak2, sk2); // 关闭obsClient obsClient.close(); SecretFlexibleObsClient继承自ObsClient,可作为ObsClient使用。 父主题: 初始化
  • 文件上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 文件上传使用本地文件作为对象的数据源。以下代码展示了如何进行文件上传: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // localfile为待上传的本地文件路径,需要指定到具体的文件名 obsClient.putObject("bucketname", "objectname", new File("localfile")); // localfile2 为待上传的本地文件路径,需要指定到具体的文件名 PutObjectRequest request = new PutObjectRequest(); request.setBucketName("bucketname"); request.setObjectKey("objectname2"); request.setFile(new File("localfile2")); obsClient.putObject(request); 上传内容大小不能超过5GB。 由于 HTTP 编码规范限制,无法发送非 ASCII 码字符,SDK 会在发送请求时对您头域中的中文汉字进行 url 编码,发送编码后数据。如您设置的值 content-disposition 为 ”attachment; filename="中文.txt"”,则对象元数据中存储的信息为”attachment; filename="%E4%B8%AD%E6%96%87.txt"”。使用浏览器访问时浏览器将会自动解码。 如若不需要 SDK 帮您编码,可以调用 PutObjectRequest.setIsEncodeHeaders(false) 关闭自动编码。如需使用该功能,请安装最新版本的SDK。 父主题: 上传对象
  • 按文件夹分组列举所有对象 以下代码展示如何按文件夹分组,列举桶内所有对象: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("bucketname"); request.setMaxKeys(1000); // 设置文件夹分隔符"/" request.setDelimiter("/"); ObjectListing result = obsClient.listObjects(request); Log.i("ListObjects", "Objects in the root directory:"); for(ObsObject obsObject : result.getObjects()){ Log.i("ListObjects","\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); } listObjectsByPrefix(obsClient, request, result); 递归列出子文件夹中对象的函数listObjectsByPrefix的示例代码如下: static void listObjectsByPrefix(ObsClient obsClient, ListObjectsRequest request, ObjectListing result) throws ObsException { for(String prefix : result.getCommonPrefixes()){ Log.i("ListObjects", "Objects in folder [" + prefix + "]:"); request.setPrefix(prefix); result = obsClient.listObjects(request); for(ObsObject obsObject : result.getObjects()){ Log.i("ListObjects","\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); } listObjectsByPrefix(obsClient, request, result); } } 以上代码示例没有考虑文件夹中对象数超过1000个的情况。 由于是需要列举出文件夹中的对象和子文件夹,且文件夹对象总是以“/”结尾,因此delimiter总是为“/”。 每次递归的返回结果中ObjectListing.getObjects包含的是文件夹中的对象;ObjectListing.getCommonPrefixes包含的是文件夹的子文件夹。
  • 分页列举全部对象 以下代码展示分页列举全部对象: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("bucketname"); // 设置每页100个对象 request.setMaxKeys(100); ObjectListing result; do{ result = obsClient.listObjects(request); for(ObsObject obsObject : result.getObjects()){ Log.i("ListObjects","\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); } request.setMarker(result.getNextMarker()); }while(result.isTruncated());
  • 列举文件夹中的所有对象 OBS本身是没有文件夹的概念的,桶中存储的元素只有对象。文件夹对象实际上是一个大小为0且对象名以“/”结尾的对象,将这个文件夹对象名作为前缀,即可模拟列举文件夹中对象的功能。以下代码展示如何列举文件夹中的对象: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("bucketname"); // 设置文件夹对象名"dir/"为前缀 request.setPrefix("dir/"); request.setMaxKeys(1000); ObjectListing result; do{ result = obsClient.listObjects(request); for (ObsObject obsObject : result.getObjects()) { Log.i("ListObjects","\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); } request.setMarker(result.getNextMarker()); }while(result.isTruncated());
  • 简单列举 以下代码展示如何简单列举对象,最多返回1000个对象: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); ObjectListing result = obsClient.listObjects("bucketname"); for(ObsObject obsObject : result.getObjects()){ Log.i("ListObjects", "\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); } 每次至多返回1000个对象,如果指定桶包含的对象数量大于1000,则返回结果中ObjectListing.isTruncated为true表明本次没有返回全部对象,并可通过ObjectListing.getNextMarker获取下次列举的起始位置。 如果想获取指定桶包含的所有对象,可以采用分页列举的方式。
  • 指定起始位置列举 以下代码展示如何指定起始位置列举对象: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("bucketname"); // 设置列举对象名字典序在"test"之后的100个对象 request.setMaxKeys(100); request.setMarker("test"); ObjectListing result = obsClient.listObjects(request); for(ObsObject obsObject : result.getObjects()){ Log.i("ListObjects","\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); }
  • 指定数目列举 以下代码展示如何指定数目列举对象: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("bucketname"); // 只列举100个对象 request.setMaxKeys(100); ObjectListing result = obsClient.listObjects(request); for(ObsObject obsObject : result.getObjects()){ Log.i("ListObjects","\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); }
  • 指定前缀列举 以下代码展示如何指定前缀列举对象: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("bucketname"); // 设置列举带有prefix前缀的100个对象 request.setMaxKeys(100); request.setPrefix("prefix"); ObjectListing result = obsClient.listObjects(request); for(ObsObject obsObject : result.getObjects()){ Log.i("ListObjects","\t" + obsObject.getObjectKey()); Log.i("ListObjects","\t" + obsObject.getOwner()); }
  • 追加上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 追加上传可实现对同一个对象追加数据内容的功能。您可以通过ObsClient.appendObject进行追加上传。示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 第一次追加上传 AppendObjectRequest request = new AppendObjectRequest(); request.setBucketName("bucketname"); request.setObjectKey("objectname"); request.setPosition(0L); request.setInput(new ByteArrayInputStream("Hello OBS".getBytes())); AppendObjectResult result = obsClient.appendObject(request); // 第二次追加上传 request.setPosition(result.getNextPosition()); request.setInput(new ByteArrayInputStream("Hello OBS Again".getBytes())); result = obsClient.appendObject(request); Log.i("AppendObject", "NextPosition:" + result.getNextPosition()); Log.i("AppendObject", "Etag:" + result.getEtag()); // 通过获取对象属性接口获取下次追加上传的位置 ObjectMetadata metadata = obsClient.getObjectMetadata("bucketname", "objectname"); Log.i("AppendObject", "NextPosition from metadata:" + metadata.getNextPosition()); ObsClient.putObject上传的对象可覆盖ObsClient.appendObject上传的对象,覆盖后对象变为普通对象,不可再进行追加上传。 第一次调用追加上传时,若已存在同名的普通对象,则会抛出异常(HTTP状态码为409)。 追加上传返回的ETag是当次追加数据内容的ETag,不是完整对象的ETag; 单次追加上传的内容不能超过5GB,且最多支持10000次追加上传。 追加上传成功后,可通过AppendObjectResult.getNextPosition获取下次追加上传的位置;或者通过ObsClient.getObjectMetadata接口获取下次追加上传的位置。 由于 HTTP 编码规范限制,无法发送非 ASCII 码字符,SDK 会在发送请求时对您头域中的中文汉字进行 url 编码,发送编码后数据。如您设置的值 content-disposition 为 ”attachment; filename="中文.txt"”,则对象元数据中存储的信息为”attachment; filename="%E4%B8%AD%E6%96%87.txt"”。使用浏览器访问时浏览器将会自动解码。 如若不需要 SDK 帮您编码,可以调用 AppendObjectRequest.setIsEncodeHeaders(false) 关闭自动编码。 父主题: 上传对象
  • 设置对象长度 您可以通过ObjectMetadata.setContentLength来设置对象长度。以下代码展示如何设置对象长度: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(1024 * 1024L);//1MB obsClient.putObject("bucketname", "objectname", new File("localfile"), metadata);
共100000条