Назад | Перейти на главную страницу

Класс GCS ResumableDownload

Мое бизнес-приложение требует загрузки файла из корзины GCS. Размер файла также может быть в ГБ. Есть ли для скачивания какой-нибудь класс вроде ResumableUpload? Я хочу использовать ResumableDownload, чтобы в случае прерывания загрузки файла можно было начать загрузку остальной части файла.

Согласно документация облачного хранилища Google, используя gsutil команда:

gsutil автоматически выполняет возобновляемую загрузку всякий раз, когда вы используете команду cp для загрузки объекта, размер которого превышает 8 МБ. Для этого не нужно указывать какие-либо специальные параметры командной строки. [. . .] Точно так же gsutil автоматически выполняет возобновляемые загрузки (используя стандартные операции HTTP Range GET) всякий раз, когда вы используете команду cp, если адресатом не является поток. В этом случае частично загруженный временный файл будет виден в каталоге назначения. По завершении исходный файл удаляется и перезаписывается загруженным содержимым.

Вы можете найти полезную эту документацию на Передача сценария производства.

Методы загрузки GCS (как в XML, так и в JSON API) реализуют Range заголовок согласно Раздел 3 RFC 7233.

Это означает, что, если вы знаете, сколько байтов вы загрузили, вы можете начать загрузку снова в любой момент.

Кроме того, вы также можете частично загружать файлы. При этом вы даже можете разделить загрузку, а затем составить полный файл.

Пример:

BUCKET=<YOUR_BUCKET_ID>
echo "Hello World!">test.txt
gsutil cp test.txt gs://$BUCKET
curl https://www.googleapis.com/storage/v1/b/$BUCKET/o/test.txt?alt=media -H'Range: bytes=6-10' -H"Authorization: Bearer $(gcloud auth print-access-token)"

Этот пример должен просто вернуть слово World.


Не уверен, как реализовать это в С #, как упоминалось в комментарии к другому ответу, но GCS поддерживает частичные загрузки. Подробности реализации, которые больше ориентированы на программирование, я предлагаю вам спросить в StackOverflow.