对象/文件(Object)
在对象存储中,对象(Object)就像文件一样,是存储数据的基本单位。您上传的每个文件(如文档、图片、视频等)都会作为Object保存在存储空间(Bucket)中,方便后续管理。
Object组成
Key的别名
您可能会在各语言的SDK文档中看到不同的术语描述,例如ObjectKey、ObjectName或对象名称,这些术语实际上都等同于Key,表示操作Object时需填写的完整Key(含路径),即下图所示“exampledir/example.jpg”。请注意,“文件名称”是为了便于理解而引用的概念,所以它仅指Key中路径的最后一部分,即“example.jpg”。
OSS目录呈现
在对象存储OSS中,其实并不具备传统文件系统中的文件和文件夹概念,但为了符合用户的使用习惯,OSS通过在Key中添加“/”来模拟文件夹,例如“exampledir/example.jpg”。此时,“exampledir”就被模拟成了一个文件夹,“example.jpg”则模拟成“exampledir”文件夹下的文件名。在OSS控制台和ossbrowser等图形化工具中可以看到这种文件夹结构。但实际上,Object的Key仍然是“exampledir/example.jpg”。详情请参见管理目录。
Object类型
Object包含以下四种类型。
不支持在不同类型的文件(Object)之间相互转换。例如,Normal类型的文件无法转换为Multipart或者Appendable类型。
类型 | 定义 | 说明 |
Normal | 通过简单上传生成的Object类型。 |
|
Multipart | 通过分片上传生成的Object类型。 |
|
Appendable | 通过追加上传生成的Object类型。 | 无论版本控制的状态如何,Appendable类型的Object在追加数据时,不会因为追加操作而生成新的版本,所有追加的数据都只会附加到原始文件之后。 |
Symlink | 通过PutSymlink生成的软链接。 | 设置软链接以便快速访问常用Object。 |
Delete Marker(删除标记)
除上述四种Object类型外,OSS还存在一种特殊的对象标识——Delete Marker(删除标记)。它并不是传统的Object类型,而是在版本控制已开启或暂停的Bucket中执行DeleteObject(删除)操作时生成的标记。如果在删除Object时未指定版本ID(Version ID),OSS会创建一个“删除标记”作为最新版本。Object看似已被删除,实际上数据仍然保留,后续仍可恢复。若删除Object时指定了版本ID,则会删除指定版本的Object,而不生成删除标记。
功能指引
上传文件
操作 | 说明 |
简单上传指的是使用OSS API中的PutObject接口上传小于5 GB的单个文件(Object),适用于一次HTTP请求交互即可完成上传的场景。 | |
分片上传是指将待上传的文件分成多个碎片(Part)分别上传,上传完成之后再调用CompleteMultipartUpload接口将这些Part组合成一个Object。 | |
通过断点续传上传的方式将文件上传到OSS前,您可以通过Checkpoint文件指定断点记录点。上传过程中,如果出现网络异常或程序崩溃导致文件上传失败时,将从断点记录处继续上传未上传完成的部分。 | |
OSS在完成文件(Object)上传时可以提供回调(Callback)给应用服务器。您只需要在发送给OSS的请求中携带相应的Callback参数,即可实现回调。 | |
客户端直传是指客户端直接上传文件到对象存储OSS。相对于服务端代理上传,客户端直传避免了业务服务器中转文件,提高了上传速度,节省了服务器资源。 | |
表单上传是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5 GB。 | |
追加上传指的是在已上传的Appendable类型Object后面直接追加内容。 | |
OSS支持使用RTMP协议推送H264编码的视频流和AAC编码的音频流到OSS。推送到OSS的音视频数据可以点播播放;在对延迟不敏感的应用场景,也可以做直播用途。 |
下载文件
操作 | 说明 |
简单下载指的是使用OSS API的GetObject接口,下载已上传的Object,适用于一次HTTP请求交互即可完成下载的场景。 | |
OSS提供了从Object指定的位置开始下载的功能,在下载大的Object的时候,可以分多次下载。如果下载中断,重启时也可以从上次完成的位置开始继续下载。 | |
您可以在不提供资源拥有者所属账号的访问密钥(AccessKey)的情况下,通过临时访问凭证以及签名URL的方式授权第三方下载文件Object。 | |
Object上传至Bucket后,您可以通过文件URL将文件分享给第三方预览或下载。 | |
通过检测最后修改时间或ETag条件,只有在文件内容发生变化时才会触发下载,避免重复下载。 |
管理文件
操作 | 说明 |
Bucket内的Object默认按照字母序排列。您可以结合实际场景列举当前Bucket的所有Object、指定前缀的Object、指定个数的Object等。 | |
拷贝文件是指在不改变文件内容的情况下,将同一地域下的源Bucket内的文件复制到目标Bucket。 | |
在同一个Bucket内重命名某个Object。 | |
当您向Bucket上传了大量的Object时,OSS支持通过指定文件名前缀快速搜索并定位目标文件。 | |
冷归档存储或者深度冷归档存储类型的Object需要解冻(Restore)之后才能读取。 | |
您可以通过多种方式删除Bucket中不再需要保留的Object。 | |
OSS支持使用标签对Bucket中的Object进行分类,您可以针对同标签的Object设置生命周期规则、访问权限等。 | |
软链接功能用于快速访问Bucket内的常用Object。设置软链接后,您可以使用类似于Windows的快捷方式,通过软链接文件快速打开Object。 | |
文件元信息是对文件的属性描述,包括HTTP标准属性(HTTP Header)和用户自定义元数据(User Meta)两种。您可以通过设置文件HTTP头来自定义HTTP请求的策略,例如文件缓存策略、强制下载策略等。您还可以通过设置用户自定义元数据来标识Object的用途或属性等。 | |
客户端访问OSS内的Object时会占用较大带宽,在某些不容易控制流控的客户端上可能会对其他应用造成影响。为避免此类问题,您可以通过OSS提供的单链接限速功能在上传、下载文件等操作中进行流量控制,以保证其他应用的网络带宽。 | |
您可以使用SelectObject对目标文件执行SQL语句,返回执行结果。 | |
在分片上传过程中,如果某些Part不再需要,您可以调用AbortMultipartUpload接口删除这些未完成的Part。 | |
通过云存储网关挂载OSS,您可以将OSS映射为一个共享的文件存储系统,实现多个用户在不同地点和设备上共享访问OSS数据。挂载完成后,您可以像使用本地文件夹和磁盘一样操作OSS资源。 |