直传文件

描述

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.comup-z0.qiniu.comupload.qiniu.com;上传到北京1区的域名为up-z1.qiniu.comupload-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 目标资源已存在。

附注

无。

在线示例

内部参考资源

外部参考资源


如果有任何问题,请进入 七牛云存储问答社区 或者发送 工单 咨询