Appearance
GetObject
接口描述
此命令用于从FOS获取某个Object。此操作需要请求者对该Object有读权限。请求者可以在Header中设置Range来指定需要获取的Object数据的范围。
请求(Request)
请求语法
GET /<BucketName>/<ObjectKey> HTTP/1.1
Host: fos.flymeyun.com
Date: <Date>
Range: <Range_String>
请求头域
名称 | 类型 | 描述 | 是否必需 |
---|---|---|---|
Range | String | 指定Object返回的文件范围。设定 bytes=0-9,表示传送第0到第9这10个字符。默认返回全部数据。 | 否 |
请求参数
无
响应(Response)
响应头域
名称 | 类型 | 描述 |
---|---|---|
Cache-Control | String | 下载Object的Cache设置,常见的可取值为private、no-cache、max-age、must-revalidate |
Content-Length | Long Int | 返回Object的数据大小 |
Content-Range | String | 有range的情况下返回Object的数据范围 |
Content-Type | String | Object的类型及编码方式 |
Expires | String | 下载Object时的缓存失效时间 |
ETag | String | Object的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]