Skip to content
大纲

GetObject

接口描述

此命令用于从FOS获取某个Object。此操作需要请求者对该Object有读权限。请求者可以在Header中设置Range来指定需要获取的Object数据的范围。

请求(Request)

请求语法

GET /<BucketName>/<ObjectKey> HTTP/1.1
Host: fos.flymeyun.com
Date: <Date>
Range: <Range_String>

请求头域

名称类型描述是否必需
RangeString指定Object返回的文件范围。设定 bytes=0-9,表示传送第0到第9这10个字符。默认返回全部数据。

请求参数

响应(Response)

响应头域

名称类型描述
Cache-ControlString下载Object的Cache设置,常见的可取值为private、no-cache、max-age、must-revalidate
Content-LengthLong Int返回Object的数据大小
Content-RangeString有range的情况下返回Object的数据范围
Content-TypeStringObject的类型及编码方式
ExpiresString下载Object时的缓存失效时间
ETagStringObject的HTTP协议实体标签
x-fos-meta-*String如果有自定meta,才返回此项

注意事项

  • GetObject通过Range参数可以支持断点续传,对于比较大的Object建议使用该功能。
  • 如果在请求头中使用Range参数;则返回消息中会包含整个文件的长度和此次返回的范围,例如:Content-Range: bytes 0-9/44,表示整个文件长度为 44,此次返回的范围为0-9。
  • 对于Range读大小为0字节的对象, 会返回400错误, Range是前闭后闭区间。

如您想在response请求里面获得某些特定的header信息,可通过如下两种方式:

  • 在PutObject时增加header信息,则GetObject时会直接返回在response里面,请参考PutObject接口
  • GetObject时,在queryString里面直接增加“responseXXX=YYY”,返回的header里面会包含“XXX: YYY”。例如:GET /testBucket/testObject?responseContentType= image/jpg,在这个http请求的response里面就会有“Content-Type: image/jpg”。
    具体的形式为response$header=urlencode(value),需要注意,当前$header只支持“ContentDisposition、ContentType、ContentLanguage、Expires、CacheControl、ContentEncoding”。

响应元素

示例

请求示例

GET /BucketName/ObjectName
Host: fos.flymeyun.com
Date: Wed, 06 Apr 2016 06:34:40 GMT
Range: bytes=0-9

响应示例

HTTP/1.1 206 Partial Content
x-fos-request-id: 4db2b34d-654d-4d8a-b49b-3049ca786409
Date: Wed, 06 Apr 2016 06:34:40 GMT
Last-Modified: Fri, 28 Jan 2011 20:10:32 GMT
ETag: "b2419b1e3fd45d596ee22bdf62aaaa2f"
Accept-Ranges: bytes
Content-Range: bytes 0-9/443
Content-Type: text/plain
Content-Length: 10

[10 bytes of object data]