Можете ли вы загрузить файл несколькими одновременными блоками в Google Drive через REST API? - PullRequest
1 голос
/ 10 мая 2019

Часто запрашиваемая функция для rclone бэкэнда диска Google позволяет загружать файлы, используя несколько блоков одновременно, чтобы ускорить процесс. S3 / B2 / Box / и т. Д. Поддерживают это, поэтому кажется очевидным, что запросить Google Drive.

Самая близкая вещь, которую я смог найти, - это Google Drive v3 API функция возобновляемой загрузки .

Вы можете использовать это с несколькими кусками. Я уже использую этот API в rclone, но по одному куску за раз.

Внимательно читая документы по этому вопросу, я думаю, что он не может загружать сразу несколько чанков - требуется последовательная загрузка чанков, но я был бы рад оказаться ошибочным!

Чтобы загрузить файл несколькими частями:

  1. Создание запроса PUT для URI возобновляемого сеанса.
  2. Добавить чанк данные в тело запроса. Создание фрагментов с кратностью 256 КБ (256 x 1024 байта), за исключением последнего фрагмента, который завершает загрузить. Сохраняйте размер куска как можно большим, чтобы загрузка эффективный.
  3. Добавьте следующие заголовки HTTP:

    • Content-Length. Установите количество байтов в текущем чанке.
    • Content-Range: Установите, чтобы показать, какие байты в файле вы загружаете. Например, Content-Range: байты 0-524287 / 2000000 показывает, что вы загрузка первых 524 288 байт (256 x 1024 x 2) в 2 000 000 байт файл.
  4. Отправьте запрос и обработайте ответ.

Если запрос на загрузку прерывается или вы получаете 5xx ответ, следуйте процедуре в разделе Возобновить прерванную загрузку.

  1. Повторите шаги с 1 по 4 для каждого оставшегося фрагмента в файле. Использовать Диапазон заголовка в ответе, чтобы определить, с чего начать следующий Кусок. Не предполагайте, что сервер получил все байты, отправленные в предыдущий запрос.

Когда загрузка всего файла завершена, вы получаете 200 OK или 201 Созданный ответ вместе с любыми метаданными, связанными с ресурс.

Если этот API не может это сделать, есть ли другой, который может?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...