Позволяет загружать большие файлы размером до 1 ГБ в Хранилище Документерры. Этот метод поддерживает возможность приостановки и возобновления загрузки, а также отслеживание прогресса, что делает его удобным для работы с большими файлами или при нестабильном сетевом подключении.
Процесс загрузки состоит из двух последовательных шагов:
- Инициализация – один запрос, который запускает загрузку.
-
Загрузка фрагментов – несколько запросов, каждый из которых отправляет часть файла. Фрагменты загружаются последовательно до полной передачи всего файла. Максимальный размер одного фрагмента — 10 МБ.
Шаг 1 - Запуск загрузки файла
POST storage/{file-path}?format={file-encode-format}&isOverwrite={is-overwrite}
Авторизация
Этот запрос требует базовой авторизации.
Параметры запроса
Параметры пути
| file-path | string | Путь к файлу или папке относительно корня, т.е. все, что после...resources/Storage/. |
|---|
Параметры поискового запроса
| format | string | Кодировка файла. Поддерживается только resumable. |
|---|---|---|
| isOverwrite | bool | [опционально] Определяет, нужно ли перезаписывать существующий файл. Условие false (ложно) по умолчанию. |
Примеры
Пример запроса
Bash (оболочка Unix) |
curl --location -g --request POST 'https://{portal-url}/api/v1/storage/manual.zip?format=resumable&isOverwrite=true' |
Тела запроса и ответа для этого метода пусты.
Шаг 2 - Загрузка частей файла
PUT storage/{file-path}?format={file-encode-format}
Авторизация
Этот запрос требует базовой авторизации.
Параметры запроса
Параметры пути
|
file-path
|
string | Тот же путь, что был указан при инициализации загрузки на Шаге 1. |
|---|
Параметры поискового запроса
| format | string | Всегда resumable. |
|---|
Заголовки запроса
| Content-Range |
string
|
Указывает диапазон байтов текущей части и общий размер файла. Формат: bytes {начало}-{конец}/{общий-размер} или bytes {начало}-{конец}/* (когда общий размер неизвестен). Значение {начало} должно быть равно последнему успешно загруженному байту + 1. Для финальной части {конец} + 1 должно равняться {общий-размер}. Размер одной части ограничен 10 МБ. Пример: bytes 0-10485759/52428800. |
|---|
Параметры тела запроса
Тело запроса содержит сырые байты части файла (бинарные данные).
Ответ
| 202 Accepted | Промежуточный ответ. Фрагмент успешно получен, но загрузка еще не завершена. Ответ включает заголовок Content-Range, указывающий текущий прогресс. Если загрузка была прервана (например, из-за проблем с сетью), сервер также возвращает ответ 202 Accepted и включает заголовок Range ,указывающий успешно полученные байты: Range: bytes=0-{последний-загруженный-байт}. Загрузку можно возобновить с указанного байта. |
|---|---|
|
201 Created
|
Финальный ответ. Последний фрагмент получен, и файл был успешно собран. |
Примеры
Пример запроса
Загрузка первой части:Bash (оболочка Unix) |
curl --location -g --request PUT 'https://{portal-url}/api/v1/storage/manual.zip?format=resumable' \ --header 'Content-Range: bytes 0-10485759/52428800' \ --data-binary @chunk1.bin |
Загрузка последней части:
Bash (оболочка Unix) |
curl --location -g --request PUT 'https://{portal-url}/api/v1/storage/manual.zip?format=resumable' \ --header 'Content-Range: bytes 41943040-52428799/52428800' \ --data-binary @last_chunk.bin |
Пример тела ответа
JSON |
|
Поля ответа
| content | Всегда null при загрузке файлов. |
|---|---|
| fileFullName | Полный путь к файлу в Хранилище. |
| fileName | Имя файла. |
| isFolder | Является ли объект папкой (false для файлов). |
| modifiedBy | Пользователь, загрузивший файл. |
| modifiedOn | Время последнего изменения (в формате ISO 8601). |
| size | Размер файла в байтах. |