Golang SDK для облачного хранилища Google: загрузка из нескольких частей - PullRequest
0 голосов
/ 04 января 2019

Использование GoLang SDK для облачного хранилища Google.

Не удается найти способ загрузки файлов по частям.

1 Ответ

0 голосов
/ 05 января 2019

Документация Google Cloud гласит, что для загрузки объекта из облачного хранилища необходимо использовать следующее:

rc, err := client.Bucket(bucket).Object(object).NewReader(ctx)
if err != nil {
        return nil, err
}
defer rc.Close()

data, err := ioutil.ReadAll(rc)
if err != nil {
        return nil, err
}
return data, nil

Источник: https://cloud.google.com/storage/docs/downloading-objects#storage-download-object-code_sample

Учитывая, что их SDK возвращает io.Reader, вам не нужно беспокоиться о базовом методе, который используется для ссылки на загрузку в виде фрагментов (хотя, быстро просматривая их источник, он просто реализует http.NewRequest, который делает то, что вы хотите, используя ту же логику).

Причина, по которой он, похоже, не «разбивается» в их примере, заключается в использовании ioutil.ReadAll, который, хотя и подходит для простых случаев использования, извлекает все данные Reader s в память (что также означает должен ждать, пока данные станут доступными).

Для лучшего понимания того, как справляться с Reader пошагово, я рекомендую взглянуть на https://tour.golang.org/methods/21 для экскурсии по io.Reader и на то, как вы можете использовать ее более эффективно.

...