API:Upload/ru

POST-запрос для загрузки файла.

Существует три способа загрузки файлов через API:


 * 1) Прямая загрузка локального файла
 * 2) Загрузка копии файла с URL-адреса
 * 3) Загрузка локального файла кусками (первоначально основанный на протоколе Firefogg chunked upload)

Все эти методы требуют учетной записи с правом.

Пример
Выполнение любого POST-запроса является многоэтапным процессом:

 Войдите, используя один из методов, описанных в . Получите :

 Отправьте POST-запрос с токеном CSRF, чтобы загрузить файл. 

Пример 1: Загрузка локального файла напрямую
При прямой загрузке файлов запрос должен использовать  в качестве Content-Type или enctype,   не будет работать.

Пример кода
upload_file_directly.py

Пример 2: Загрузка файла с URL-адреса
Для этого требуется  в локальных настройках вики и учётная запись с пользовательским правом.

Пример 3: Загрузка файла кусками
Поскольку загрузка огромного файла в одном HTTP POST может быть ненадёжной, API также поддерживает режим фрагментированной загрузки, в котором вы делаете несколько запросов с частями файла. Это доступно в MediaWiki версии 1.20 и выше, хотя до версии 1.25 SVG-файлы не могли быть загружены через фрагментированную загрузку. This is used by in browsers supporting FileAPI, uploading files in chunks of 1 megabyte, but you may choose your own size. This works in conjunction with the stash mode, to build a file up in pieces and then commit it at the end.

Шаг 1: Передайте содержимое первого куска


For all the chunks except the last chunk you will receive this:

Step 2: Pass filekey parameter for second and further chunks
You will obtain the  parameter from the previous continue result as well:



For the last chunk, you will receive this:

Step 3: Final upload using the filekey to commit the upload out of the stash area


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

История параметров

 * v1.21: Введены
 * v1.19: Введены
 * v1.18: Введены
 * v1.17: Введены,  ,  ,
 * v1.18: Устарели
 * v1.17: Устарели

Дополнительная информация

 * Чтобы проверить состояние текущей загрузки в тайник или ход публикации файла из тайника, отправьте POST-запрос:


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

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--

См. также

 * - Позволяет участнику войти в систему
 * - Позволяет участнику импортировать страницу