Часто запрашиваемая функция для rclone бэкэнда диска Google позволяет загружать файлы, используя несколько блоков одновременно, чтобы ускорить процесс. S3 / B2 / Box / и т. Д. Поддерживают это, поэтому кажется очевидным, что запросить Google Drive.
Самая близкая вещь, которую я смог найти, - это Google Drive v3 API функция возобновляемой загрузки .
Вы можете использовать это с несколькими кусками. Я уже использую этот API в rclone, но по одному куску за раз.
Внимательно читая документы по этому вопросу, я думаю, что он не может загружать сразу несколько чанков - требуется последовательная загрузка чанков, но я был бы рад оказаться ошибочным!
Чтобы загрузить файл несколькими частями:
- Создание запроса PUT для URI возобновляемого сеанса.
- Добавить чанк
данные в тело запроса. Создание фрагментов с кратностью 256 КБ (256 x
1024 байта), за исключением последнего фрагмента, который завершает
загрузить. Сохраняйте размер куска как можно большим, чтобы загрузка
эффективный.
Добавьте следующие заголовки HTTP:
- Content-Length. Установите количество байтов в текущем чанке.
- Content-Range: Установите, чтобы показать, какие байты в файле вы загружаете.
Например, Content-Range: байты 0-524287 / 2000000 показывает, что вы
загрузка первых 524 288 байт (256 x 1024 x 2) в 2 000 000 байт
файл.
- Отправьте запрос и обработайте ответ.
Если запрос на загрузку прерывается или вы получаете 5xx
ответ, следуйте процедуре в разделе Возобновить прерванную загрузку.
- Повторите шаги с 1 по 4 для каждого оставшегося фрагмента в файле. Использовать
Диапазон заголовка в ответе, чтобы определить, с чего начать следующий
Кусок. Не предполагайте, что сервер получил все байты, отправленные в
предыдущий запрос.
Когда загрузка всего файла завершена, вы получаете 200 OK или 201
Созданный ответ вместе с любыми метаданными, связанными с
ресурс.
Если этот API не может это сделать, есть ли другой, который может?