腾讯云对象存储(COS)使用方法

最近正在搭建自己的个人网站,使用了腾讯的云服务,找到了一个“对象存储(Cloud Object Storage)”服务,就使用了一下试试看,这篇文章是一篇学习笔记。先介绍下这个服务,它的产品文档是这样说的:

对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。COS 提供网页端管理界面、多种主流开发语言的 SDK、API 以及命令行和图形化工具,并且兼容 S3 的 API 接口,方便用户直接使用社区工具和插件。

腾讯云官方网站:https://cloud.tencent.com/product/cos

1.创建存储桶(Bucket)

打开自己的对象存储控制台- Bucket 列表,会看到一个如下图所示的“创建 Bucket”按钮。点击按钮创建 Bucket。Bucket 就是一个存储对象(文件)的空间,在存储路径中就是根目录(/),我们可以在这个 Bucket 中创建目录并更改其中的内容。

创建 Bucket

创建存储桶需要填写一些信息,如下图:

输入信息

Bucket 名称只允许小写字母和数字的组合且不能超过 40 字符,地域选择的原则是靠近服务访问的集中区域,访问权限如图中所示,CDN 加速可以根据需要选择,如果开启的话上传的每个文件都会有一个自己的 CDN 加速 URL 和一个文件 URL。

创建 Bucket 后可以在 Bucket 列表的基础配置选项页面中配置 Bucket 的各种设置,对于个人网站的资源存储比较实用的是“防盗链设置”和“静态网站”两个选项了,但是如果开启了“私有读写”权限(在创建 Bucket 时设置)的话,黑白名单什么的开不开都可以吧。其中“静态网站”功能可以托管静态内容(HTML 页面或者包含客户端脚本的页面等)做成静态网站,并支持自定义域名访问。

2.在自己的代码中访问

创建好存储用的 Bucket 后就可以使用了 COS 了,可以在“Bucket 列表”页面选中一个 Bucket 打开它的文件列表并上传文件、创建目录或者获取文件下载链接等。然而对于一个开发者来说,最重要的还是要能在代码中使用 COS 服务,这就要用到 COS 的 SDK(Software Development Kit,软件开发工具包) 了。COS 的 SDK 有很多的语言版本,详细在这里。我的个人网站主要是使用 PHP 编写的,所以我就主要介绍一下 PHP 版本的 SDK 使用方法。

首先从 Github 上面下载 SDK 源码,网址在这里。源代码中有一个 include.php 文件,使用 SDK 提供的函数之前在文件中包含 include.php,使用 SDK 的命名空间并 new 出一个 cosApi 对象就可以使用对象中提供的方法了,代码如下:

SDK 初始化

解释一下图中的参数(并不是所有的参数都需要定义,主要取决于执行的操作是否需要那个参数,并且参数的名称也不是固定的,可以随意更改):

  • $bucket ——要操作的存储桶名;
  • $src ——所要操作的目标输入路径;
  • $dst(2) ——目标输出路径;
  • $folder —— COS 中的目录路径(创建新目录或其他操作时使用);
  • $config ——放置用于连接 COS 所需信息的设置数组(关于 config 中的信息看这里);
  • $cosApi ——存放 SDK 函数的对象(使用 $config 数组中的设置生成的)。

创建 SDK 对象以后就可以使用对象中的方法对 COS 进行操作了,SDK 中不同方法可以实现不同的操作,如下(src 和 dst 参数若没有说明都是指在存储桶中的路径):

  • $cosApi->createFolder($bucket, $folder, $bizAttr=NULL)

    • 创建新目录
    • bucket 参数是存储桶的名称(下同)
    • folder 参数是新目录的路径
    • bizAttr 参数是创建目录时为目录添加的附加自定义属性信息(输入字符串即可,可省略)
  • $cosApi->upload($bucket, $src, $dst)

    • 上传文件
    • src 参数是要上传文件的路径
    • dst 参数是上传后的保存路径
  • $cosApi->download($bucket, $src, $dst)

    • 下载文件
    • src 参数是要下载的文件路径
    • dst 参数是下载到的本地保存路径
  • $cosApi->listFolder($bucket, $folder)

    • 列出目录中的内容
    • folder 参数是要列出内容的目标目录的路径
  • $cosApi->updateFolder($bucket, $folder, $bizAttr)

    • 更新目录的自定义属性信息
    • folder 参数是要更新信息的目录的路径
  • $cosApi->update($bucket, $dst, $bizAttr, $authority, $customerHeaders)

    • 更新文件信息
    • dst 参数是目标文件的路径
    • bizAttr 参数是自定义属性信息字符串
    • authority 参数是文件的读写权限(eInvalid,继承 Bucket 的读写权限;eWRPrivate,私有读写;eWPrivateRPublic,公有读私有写)
    • customerHeaders 参数是“用户自定义头域”数组,这个不是很了解也没有用过。
  • $cosApi->statFolder($bucket, $folder)

    • 获取目录的状态信息
    • folder 参数是要获取状态信息的目录路径
  • $cosApi->stat($bucket, $dst)

    • 获取文件的状态信息
    • dst 参数是要获取状态信息的文件的路径
  • $cosApi->delFile($bucket, $dst)

    • 删除文件
    • dst 参数是要删除的文件的路径
  • $cosApi->delFolder($bucket, $folder)

    • 删除目录
    • folder 参数是要删除的文件的路径
  • $cosApi->copyFile($bucket, $src, $dst)

    • 复制文件
    • src 参数是要复制的文件的路径
    • dst 参数是复制到的路径
  • $cosApi->moveFile($bucket, $src, $dst)

    • 移动文件
    • src 参数是要移动的文件的路径
    • dst 参数是要移动到的路径

那么怎么获取到以上函数所提供的信息呢?以上函数都有返回值,获取返回值可以得到自己想要的信息。返回值是数组形式的,内容一般有三个:

  1. code ——错误码,成功时为 0
  2. message ——错误信息
  3. data ——若请求数据了,则这里为数据

3.总结

使用 COS 可以干什么呢?我觉得可以做个个人云盘啦,网站经常使用的资源存储啦,网站日志自动备份或者数据库备份什么的吧,再探索一下。以上就是我使用 COS 的经验,后续有了更多体会可能会继续更新这篇文章。


腾讯云对象存储(COS)使用方法
https://maphical.cn/2017/08/how-to-use-tencent-cloud-cos/
作者
MaphicalYng
发布于
2017年8月9日
许可协议