直传文件
描述
upload是七牛云存储提供的最基础的接口,用于在一次HTTP会话中上传单一的一个文件。
使用方法
我们可以用如下的HTML表单来描述表单上传的基本用法:
<form method="post" action="http://upload.qiniu.com/"
 enctype="multipart/form-data">
  <input name="key" type="hidden" value="<resource_key>">
  <input name="x:<custom_name>" type="hidden" value="<custom_value>">
  <input name="token" type="hidden" value="<upload_token>">
  <input name="file" type="file" />
  <input name="crc32" type="hidden" />
  <input name="accept" type="hidden" />
</form>
请求报文
请求报文格式
请求报文的内容以multipart/form-data格式组织,具体细节请参考Multipart格式。
POST / HTTP/1.1
Host:           upload.qiniu.com
Content-Type:   multipart/form-data; boundary=<frontier>
Content-Length: <multipartContentLength>
--<frontier>
Content-Disposition:       form-data; name="token"
<uploadToken>
--<frontier>
Content-Disposition:       form-data; name="key"
<key>
--<frontier>
Content-Disposition:       form-data; name="<xVariableName>"
<xVariableValue>
--<frontier>
Content-Disposition:       form-data; name="crc32"
<crc32>
--<frontier>
Content-Disposition:       form-data; name="accept"
<acceptContentType>
--<frontier>
Content-Disposition:       form-data; name="file"; filename="<fileName>"
Content-Type:              application/octet-stream
Content-Transfer-Encoding: binary
<fileBinaryData>
--<frontier>--
请求头部
| 头部名称 | 必填 | 说明 | 
| Host | 是 | 上传服务器域名,上传到杭州1区的域名为up.qiniu.com、up-z0.qiniu.com和upload.qiniu.com;上传到北京1区的域名为up-z1.qiniu.com和upload-z1.qiniu.com | 
| Content-Type | 是 | 固定为multipart/form-data。<frontier>为Multipart分隔符,必须是任何Multipart消息都不包含的字符串。 | 
| Content-Length | 是 | 整个Multipart内容的总长度,单位:字节(Byte)。 | 
请求报文参数
请求报文的每一个参数(以“<>”标记)的具体说明如下表所示(按出现位置顺序排列):
| 参数名称 | 必填 | 说明 | 
<token> | 
是 | 上传凭证,位于token消息中。 | 
<xVariableName> | 
自定义变量的名字。 | |
<xVariableValue> | 
自定义变量的值。 | |
<file> | 
是 | 原文件名。 对于没有文件名的情况,建议填入随机生成的纯文本字符串。 本参数的值将作为魔法变量$(fname)的值使用。  | 
<fileBinaryData> | 
是 | 上传文件的完整内容。 | 
<key> | 
资源的最终名称,位于key消息中。如不指定则使用上传策略saveKey字段所指定模板生成Key,如无模板则使用Hash值作为Key。 | 
|
<crc32> | 
上传内容的 CRC32 校验码。 如填入,则七牛服务器会使用此值进行内容检验。  | 
|
<accept> | 
当 HTTP 请求指定 Accept 头部时,七牛会返回的 Content-Type 头部的值。该值用于兼容低版本 IE 浏览器行为。低版本 IE 浏览器在 multiform 返回 application/json 的时候会表现为下载,返回 text/plain 才会显示返回内容。 | 
注意:用户自定义变量可以有多对。
响应报文
响应报文格式
HTTP/1.1 200 OK
Content-Type:   application/json
Cache-Control:  no-store
{
    "hash": "<hash>",
    "key":  "<key>"
}
响应头部
| 头部名称 | 必填 | 说明 | 
| Content-Type | 是 | MIME类型,固定为application/json。 | 
| Cache-Control | 是 | 缓存控制,固定为no-store,不缓存。 | 
响应内容
■ 如果请求成功,返回包含如下内容的JSON字符串(已格式化,便于阅读):
{
    "hash": "<Hash  string>",
    "key":  "<Key   string>"
}
| 字段名称 | 必填 | 说明 | 
hash | 
是 | 目标资源的hash值,可用于ETag头部。 | 
key | 
是 | 目标资源的最终名字,可由七牛云存储自动命名。 | 
■ 如果请求失败,返回包含如下内容的JSON字符串(已格式化,便于阅读):
{
    "code":     <HttpCode  int>,
    "error":   "<ErrMsg    string>",
}
| 字段名称 | 必填 | 说明 | 
code | 
是 | HTTP状态码,请参考响应状态。 | 
error | 
是 | 与HTTP状态码对应的消息文本。 | 
响应状态
| HTTP状态码 | 含义 | 
| 200 | 上传成功。 | 
| 400 | 请求报文格式错误,报文构造不正确或者没有完整发送。 | 
| 401 | 上传凭证无效。 | 
| 413 | 上传内容长度大于 fsizeLimit 中指定的长度限制。 | 
| 579 | 回调业务服务器失败。 | 
| 599 | 服务端操作失败。 如遇此错误,请将完整错误信息(包括所有HTTP响应头部)通过邮件发送给我们。  | 
| 614 | 目标资源已存在。 | 
附注
无。
                
如果有任何问题,请进入 七牛云存储问答社区 或者发送 工单 咨询