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-файлы не могли быть загружены через фрагментированную загрузку. Это используется в браузерах, поддерживающих FileAPI, загружая файлы кусками по 1 мегабайту, но вы можете выбрать свой собственный размер. Это работает в сочетании с режимом хранения (stash mode), чтобы собрать файл по частям, а затем зафиксировать его в конце.

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


Для всех кусков, кроме последнего, вы получите это:

Шаг 2: Передайте параметр filekey для второго и последующих кусков
До тех пор пока получаете параметр  из предыдущего ответа продолжения:



Для последнего куска вы получите это:

Шаг 3: Окончательная загрузка с использованием filekey, для фиксации загрузки из области тайника


Ответ на окончательную загрузку будет включать в себя полный, точный объект, сопоставимый с тем, что вы получите от загрузки без фрагментов.

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

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

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

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


 * Ниже приведен пример составного POST к, представляющего один кусок. Обратите внимание, что вы должны достать файла из тайника, чтобы он появился в Вики, как только вы успешно загрузили все куски.

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

См. также

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