跳到主要内容

云存储

StorageManager 实例可以对文件(对象存储)进行管理。

获得当前环境下的 StorageManager 实例:

$stroageManager = $tcbManager->getStorageManager();
  • key:每个对象都有一个唯一的 key,对应于函数签名中的 key 参数,类似于文件路径,可通过分隔符 / 分隔 key,例如:images/avatar/head.jpgimages/avatar/ 也是一个合法的 key,但是这个 key 对应的对象没有实际内容。注意:在对象存储中没有文件、文件夹等文件系统概念。
  • prefix:从 ObjectKey 的第一个字符开始到任意字符,构成的字符串被称为 prefix,例如:images/avatar/head.jpg 的 prefix 有 images/avatar/images/ava 等,甚至 images/avatar/head.jpg 也可以是一个合法的 prefix。

上传单个对象#

接口定义#

该接口可上传单个文件到对象存储中。

putObject(string $key, string $path, array $options = []): object

参数说明#

参数名类型描述
$keyStringObjectKey
$pathString文件路径,如果该路径是一个目录,则会在该目录下查找 $key 文件上传

调用示例

$storageManager->putObject("/path/to/file", "path/to/asserts")$storageManager->putObject("/image/head.ico", "/workspace/projcect")

返回示例

stdClass Object(    [RequestId] => 1563804348002_58102)

返回字段描述

参数名类型描述
RequestIdString请求唯一标识

删除单个对象#

接口定义#

该接口可删除一个对象存储中的对象。

deleteObject(string $key): object

参数说明#

参数名类型描述
$keyStringObjectKey

调用示例

$storageManager->deleteObject($key)

返回示例(删除了公共响应字段)

stdClass Object(    [RequestId] => 1563804680285_12662)

返回字段描述

参数名类型描述
RequestIdString请求唯一标识
HeadersArray无特定的头部字段
BodyNULL该接口无 Body

下载单个对象#

接口定义#

该接口可下载一个对象到本地。

getObject(string $key): object

参数说明#

参数名类型描述
$keyStringObjectKey
targetString下载文件保存地址
$storageManager->getObject($key, $target)

返回值示例

该接口无返回值。该接口会同时将对象写入 $target 指定路径。

获取对象列表#

接口定义#

该接口可以获取对象存储中的对象列表。

listObjects(array $options = []): object

参数说明#

参数名类型描述
$optionsArray可选参数
⁃ prefixString对象键匹配前缀,限定响应中只包含指定前缀的对象键,例如:src/,表示以 src 或 dist 为前缀的对象
⁃ delimiterBoolean一个字符的分隔符,用于对 prefix 进行分组
⁃ max-keysNumber单次返回最大的条目数量,默认值为 1000,最大为 1000
⁃ markerNumberObjectKey,所有列出条目从 marker 开始,如果不能一次全部返回,则可通过此字段跳过

调用示例

$storageManager->listObjects([    "prefix" => "src/",    "delimiter" => "",    "max-keys" => 1000]);

返回示例

stdClass Object(    [Name] => test-1251267563    [Prefix] => src/    [Marker] =>    [MaxKeys] => 1000    [Delimiter] => /    [IsTruncated] => false    [Contents] => Array        (            [0] => stdClass Object                (                    [Key] => src/                    [LastModified] => 2019-06-12T07:08:33.000Z                    [ETag] => "d41d8cd98f00b204e9800998ecf8427e"                    [Size] => 0                    [Owner] => stdClass Object                        (                            [ID] => 1251267563                            [DisplayName] => 1251267563                        )                    [StorageClass] => STANDARD                )            [1] => stdClass Object                (                    [Key] => src/index.ts                    [LastModified] => 2019-06-12T07:08:44.000Z                    [ETag] => "4d212baa186498091dd7628d21540b1f"                    [Size] => 25                    [Owner] => stdClass Object                        (                            [ID] => 1251267563                            [DisplayName] => 1251267563                        )                    [StorageClass] => STANDARD                )        ))

返回字段描述

参数名类型描述
NameString说明 Bucket 的信息
PrefixString对象键匹配前缀,对应请求中的 prefix 参数
MarkerString默认以 UTF-8 二进制顺序列出条目,所有列出条目从 marker 开始
NextMarkerString假如返回条目被截断,则返回 NextMarker 就是下一个条目的起点
MaxKeysString单次响应请求内返回结果的最大的条目数量
DelimiterString分隔符,对应请求中的 delimiter 参数
IsTruncatedBoolean响应请求条目是否被截断,布尔值:true,false
ContentsArray元数据信息
Contents[].KeyStringObject 的 Key
Contents[].LastModifiedString说明 Object 最后被修改时间
Contents[].ETagString文件的 MD5 算法校验值
Contents[].SizeString说明文件大小,单位是 Byte
Contents[].OwnerStringBucket 持有者信息
Contents[].Owner.IDStringBucket 的 APPID
Contents[].Owner.DisplayNameStringObject 持有者的名称
Contents[].StorageClassStringObject 的存储类型,枚举值:STANDARD,STANDARD_IA,ARCHIVE。详情请参阅 存储类型 文档
CommonPrefixesArray只有指定了 delimiter 参数的情况下才有可能包含该元素
CommonPrefixes[].PrefixString单条 Common Prefix 的前缀

获取临时访问地址#

接口定义#

该接口可获取对象的临时访问地址。

getTemporaryObjectUrl(string $key, array $options): string

参数说明#

参数名类型描述
$keyStringObjectKey
$optionsArray可选参数
⁃ expiresString有效期,默认为 10 分钟,请注意设置合理的有效期,格式为 strtotime 函数所接受的字符串

!对象的访问权限需要对外开放,否则 URL 无法访问。

调用示例

$url = $stroageManager->getTemporaryObjectUrl("functionName", [    "expires" => "10 minutes"]);

返回示例

https://6465-demo-619e0a-1251267563.tcb.qcloud.la/data/.gitkeep?sign=a8927e771da9b4afdf488922f1b8361b&t=1563778666

上传目录#

接口定义#

该接口可以上传本地目录到对象存储中。

upload(string $src, array $options = []): void

上传本地目录 $src 中的文件到对象存储桶的 $options["prefix"] 路径下。

参数说明#

参数名类型描述
$srcString本地路径
$optionsArray可选参数
⁃ prefixString对象存储的指定 key 前缀,即路径,默认为根路径

调用示例

$storageManager->upload($src, ["prefix" => "abc"])

该接口无返回值。

下载对象#

接口定义#

该接口可下载对象存储中的具备相同 prefix 的对象到本地。

download(string $dst, array $options = []): void

参数说明#

参数名类型描述
$dstString本地路径
$optionsArray可选参数
⁃ prefixString对象存储的指定 key 前缀,即路径,默认为根路径

调用示例

$storageManager->download($dst, ["prefix" => "src/"])

该接口无返回值。

移除对象#

接口定义#

该接口可删除对象存储中的具备相同 prefix 的对象。

remove(array $options = []): void

参数说明#

参数名类型描述
$optionsArray可选参数
⁃ prefixString对象存储的指定 key 前缀,即路径,默认为根路径

调用示例

$storageManager->remove(["prefix" => "src/"])

该接口无返回值。

对象列表#

接口定义#

该接口可列出对象存储中的具备相同 prefix 的对象。

keys(array $options = []): array

参数说明#

参数名类型描述
$optionsArray可选参数
⁃ prefixString对象存储的指定 key 前缀,即路径,默认为根路径

调用示例

$storageManager->keys(["prefix" => "src/"])

返回示例

Array(    [0] => upload/.gitignore    [1] => upload/index.js    [2] => upload/lib/index.js    [3] => upload/文档.doc)