Skip to content
大纲

PutObject

接口描述

此接口用于向指定的Bucket上传一个文件,请求者必须具有Write权限。在PutObject前需要确保对应的Bucket已经存在,FOS支持Object文件的长度范围是0Byte-5GB。如果需要上传大于5GB的文件,请参考分块上传指南

请求(Request)

请求语法

PUT /<BucketName>/<ObjectName> HTTP/1.1
Host: fos.flymeyun.com
Date: <Date>
Content-Type: text/plain
Content-Length: <Content_Length>

请求参数

无特殊参数

请求头域

名称类型描述是否必需
Cache-ControlString下载Object的Cache设置,常见的可取值为private、no-cache、max-age、must-revalidate
Content-DispositionString设置浏览器是否下载,可取值为inline、attachment; filename="download.txt"
Content-MD5StringRFC2616定义的HTTP请求内容的MD5摘要,可以通过携带该字段来验证保存在FOS侧的文件和用户预期的文件是否一致。
ExpiresString用于设置下载Object时的缓存失效时间,如果不做时间设置,FOS则会默认设置缓存失效时间为三天。
x-fos-meta-*String用户自定义的meta
x-fos-content-sha256String通过携带该字段来验证保存在FOS侧的文件和用户预期的文件是否一致,sha256的校验准确性更高。所传数据的sha256值必须与此匹配,否则PutObject失败

响应头域(Response)

响应头域

名称类型描述
ETagStringObject的HTTP协议实体标签

注意事项

  1. Content-Length是必须参数,如果请求者指定的Content-Length比实际请求体(Object的实际数据)长度小,FOS只保存Content-Length指定长度的数据,多的这部分数据直接废弃;相反,如果Content-Length的长度大,FOS将一直等待请求者上传数据,直到超时。
  2. 上传的Object,如不指定Content-Type,FOS会自动识别设置合适的Content-Type,若无法识别则默认为application/octet-stream
  3. FOS目前不支持Version,如果请求者重复Put一个Object,之前上传的数据将被覆盖。
  4. 由于FOS本身是一个(<Key>,<Value>)的存储系统,所以原则上并不会存在“文件夹”的概念。若需要按照文件夹来划分,可以把 “/” 符号作为分隔符模拟文件夹。例如上传object为 “work/test/123.txt”,控制台显示时会根据“/”自动切分,创建work文件夹下面的test文件夹和test文件夹下的123.txt文件。

响应参数

示例

请求示例

PUT /BucketName/ObjectName HTTP/1.1
Host: fos.flymeyun.com
Date: Wed, 06 Apr 2016 06:34:40 GMT
Content-Type: text/plain
Content-Length: 11434
[11434 bytes of object data]

响应示例

HTTP/1.1 200 OK
x-fos-request-id: 4db2b34d-654d-4d8a-b49b-3049ca786409
Date: Wed, 06 Apr 2016 06:34:40 GMT
ETag: "1b2cf535f27731c974343645a3985328"
Content-Length: 0
Connection: close