1. 对象管理
1.1. 对象概述
在对象存储中,每个文件对象都由对象键(Key)、数据值(Value)、和对象元数据(Metadata)组成。
- 对象键(Key):对象在Bucket中的唯一标识。
- 数据值(Value):上传的对象大小。在控制台中上传对象最大支持 20MB;API普通上传最大支持1G,用户可根据对象大小选择不同上传方式,将本地任意类型的文件上传至Bucket中。
- 对象元数据(Metadata):文件的属性描述,可以在上传对象时对其进行设置。您上传对象后,如需修改对象元数据,您只能创建对象副本并设置元数据。
对象键(Key)
Key是对象的名字,所在Bucket下的唯一标识。Key的名称是一串 Unicode 字符,它的 UTF-8 编码长度最大为 1 024 个字节。
命名规则:
虽然您可以在对象键名称中使用任何 UTF-8 字符,但是以下键命名最佳做法有助于确保与其他应用程序的最大兼容性:
- 数字、大小写字母:0~9,A~Z,a~z
- 可用特殊字符: ! 、 - 、 _ 、 . 、 *
有效键示例:
- new-organization
- new.great_photos-2018/01/mine.jpg
- videos/2018/work/video01.wmv
注意:如您上传的文件或文件夹命名中带有中文,则中文部分将按照 URL Encode 规则转化为百分号编码。例如:将名称为 文档.doc 的文件上传到Bucket根目录 ,则对象键为:%E6%96%87%E6%A1%A3.doc
对象元数据(Metadata)
对象元数据是对上传到Bucket的文件的属性描述,分为两种:HTTP标准属性(HTTP Headers)和 User Meta(用户自定义元数据)。
- HTTP标准头支持:
HTTP标准头 | 说明 |
---|---|
Cache-Control | 文件的缓存机制 |
Content-Type | 文件类型 |
Content-Disposition | 下载时的名称展示 |
Expires | 用来控制缓存的失效日期 |
Content-Encoding | 文件的编码格式 |
Content-Language | 文件内容的语言编码 |
- User Meta自定义元数据
自定义元数据是对象的可自定义参数,以“x-oss-”作为前缀,如“x-oss-data”、“x-oss-acl”。
元数据定义规则:
使用小写存储用户定义的元数据。使用 REST 和 UTF-8 时或通过 POST 基于浏览器的上传时,每个名称、值对都必须符合 US-ASCII
PUT 请求头中,用户定义的元数据的大小限制为 2 KB。用户定义的元数据是一组键值对,通过计算每个键和值的 UTF-8 编码中的字节总数来测量用户定义的元数据的大小。
注意:自定义源数据不支持设为“x-oss-security-token”、“x-oss-delete-bucket”、“x-oss-id-2”、“x-oss-version-id”。
1.2. 上传文件
上传文件操作是指在指定的Bucket内增加一个对象,执行该操作需要用户拥有Bucket的写权限。
同一个Bucket中存储的文件,对象键必须是唯一的。如果上传了相同名称的文件,则新上传的文件将进行覆盖原有文件。
开发者可选择以下方式完成文件上传:
普通上传
普通上传指的是用户使用对象存储 API中的Put Object方法上传单个Object,可以适用在任何一次HTTP请求交互即可完成上传的场景,比如小文件的上传。
功能使用
控制台使用,参阅 控制台操作-上传文件 文档。 API使用,参阅 PUT Object文档说明。
注意事项:
- 文件大小:不能超过20M。
- 文件名称必须遵循对象键命名规则。
- 普通上传使用的是单次HTTP请求,Object过大会导致上传时间长。请在上传时间内保持网络通常以免超时或断开连接导致上传是吧。可以考虑断点续传上传(分片上传)。当文件大于20M时,这种情况下只能使用断点续传上传(分片上传),具体参考断点续传上传。
断点续传(分片上传)
断点续传适合于在弱网络或高带宽环境下上传较大的对象。您可以自行切分对象并分别调用 API 上传各个分块。
1.3. 下载文件
拥有对象读权限的用户可以执行下载操作,返回信息会包含对象内容和对象的元数据信息
简单下载文件
简单下载即下载已经上传的文件(Object),Object下载是使用HTTP的GET请求来完成的。
功能使用
控制台使用,参阅 控制台操作-下载文件 文档。
API使用,参阅 GET Object文档说明。
1.4. 删除文件
您可以通过以下方法删除上传在Bucket中的文件(Object):
- 单个删除:指定某个对象进行删除
- 批量删除:一次指定不超过1000个文件进行删除。
- 自动删除:如果需要删除的对象数目很多,而且删除的对象有一定的规律,比如定期删除某些天之前的对象,或者是要清空整个Bucket,这个时候推荐使用生命周期管理来完成。设置了之后,系统会根据规则自动删除已到期的对象,能大大减少您发送删除请求的次数,提高删除速度。