API:Upload/zh

使用POST请求来上传一个文件.

有三种方法通过API上传文件：


 * 1) 直接上传本地文件
 * 2) 从URL复制上传一个文件
 * 3) 分块上传一个本地文件

所有这些方法需要一个拥有 权限的账号.

上傳警告
请注意，由于许多警告条件，上传可能会失败. 这可以通过设置  来覆盖. 以下列举了一些值得注意的警告：


 * exists: 存在同名文件. 如果忽略此警告，上传的文件将替换现有文件.
 * no-change: 存在同名且内容一致的文件.
 * duplicate-version: 存在同名文件，且您上传的文件是已存在文件的一个较旧版本.
 * was-deleted: 存在已被删除的同名文件.
 * duplicate: 您要上传的文件在站点中已有同名（或不同名）版本. 上传这个文件的副本可能是不可取的.
 * duplicate-archive: 您要上传的文件在站点中曾经以不同（或相同）的名称存在，但已被删除. 这可能表明该文件不合适且不应上传.

示例
任何POST请求都是一个多步骤的过程：

 使用中描述的方法之一登录.  获取：

 发送包含CSRF令牌的POST请求以上传文件.  

示例一：直接上传本地文件
直接上传文件时，请求必须使用  作为content-type或enctype，同时   不起作用.

示例二：从URL上传文件
这需要 wiki 的本地设置中的  和具有   用户权限的帐户.

示例三：分块上传文件
由于在单个POST请求中上传大文件可能不可靠，因此 API 还支持分块上传模式，您可以使用文件的多部分发出多个请求. 这在 MediaWiki 1.20 及更高版本中可用，尽管在 1.25 版本之前，SVG文件无法通过分块上传上传. 这在支持 FileAPI 的浏览器中由 使用，以1MB的块上传文件，但您可以选择自己的大小. 这与stash模式结合使用，将文件分段构建，然后在最后提交.

第一步：发送第一个块中的内容


对于除最后一个块之外的所有块，您将收到以下信息：

第 2 步：为第二个和更多块传递参数filekey
您还将从之前的 continue 结果中获得参数 ：



对最后一个块，您将接收到：

第三步：使用 filekey 将上传提交到存储区之外的最终上传


The result from the final upload will include the complete, accurate  object, comparable to what you would get from a non-chunked upload.

可能的错误
See also the section on #Upload warnings above.

参数历史

 * v1.21: 启用
 * v1.19: 启用
 * v1.18: 启用
 * v1.17: 启用, ,  ,
 * v1.18: 弃用
 * v1.17: 弃用

补充资料

 * To check the status of an in-progress upload to the stash or the progress of a file being published from the stash, send a POST request:

Note that you must unstash the file for it to appear in the Wiki once you have successfully uploaded all your chunks.
 * Below is an example of a multipart POST to, representing a single chunk.

User-Agent:  Content-Type: multipart/form-data; boundary=--24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Host: commons.wikimedia.org Cookie: Connection: Keep-Alive

--24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="filename" Content-Length: 20

UploadTest356456.png --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="offset" Content-Length: 1

0 --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="format" Content-Length: 4

json --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="ignorewarnings" Content-Length: 1

1 --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="filesize" Content-Length: 3

971 --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="token" Content-Length: 42

 --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="stash" Content-Length: 1

1 --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b Content-Disposition: form-data; name="chunk"; filename="1.png" Content-Type: application/octet-stream Content-Length: 971

 --24b7c3bb-fb4d-45c3-937c-11c2e0c2525b--

参见

 * - 允许用户登录
 * - 允许用户导入页面
 * - Upload limits according to user groups