- Требуется частичная загрузка файла с Google Диска с помощью google-api- python -клиента с python.
- Вы уже можете загрузить файл с Google Диск, используя Drive API с вашим скриптом.
Если я правильно понял, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Точки модификации:
- В этом случае свойство диапазона, например
Range: bytes=500-999
, должно быть включено в заголовок запроса. , Это уже упоминалось в вашем вопросе. - Для
request = drive_service.files().get_media(fileId=file_id)
он включает в себя свойство диапазона в заголовке.
Когда ваш скрипт изменяется, он становится следующим:
Модифицированный скрипт:
С:
request = drive_service.files().get_media(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request, chunksize=length)
done = False
while done is False:
status, done = downloader.next_chunk()
return fh.getvalue()
Кому:
request = drive_service.files().get_media(fileId=file_id)
request.headers["Range"] = "bytes={}-{}".format(start, start+length)
fh = io.BytesIO(request.execute())
return fh.getvalue()
Примечание:
- В вышеописанном модифицированном скрипте при использовании
MediaIoBaseDownload
было обнаружено, что файл полностью загружается без использования свойства range. Поэтому я не использую MediaIoBaseDownload
. Также вы можете использовать requests
, как показано ниже.
url = "https://www.googleapis.com/drive/v3/files/" + file_id + "?alt=media"
headers = {"Authorization": "Bearer ###accessToken###", "Range": "bytes={}-{}".format(start, start+length)}
res = requests.get(url, headers=headers)
fh = io.BytesIO(res.content)
return fh.getvalue()
Ссылка:
Если я неправильно понял ваш вопрос и это не то направление, которое вы хотите, я приношу свои извинения.