Вы почти сделали это, просто пара вещей:
Относительно полезной нагрузки первого запроса, когда вы инициируете возобновляемую загрузку и отправляете метаданные:
payload = '{"name": "myObject", "parents": "[PARENT_FOLDER]"}'
Вы должны поместить это так, чтобы сохранить файл в выбранной папке:
payload = '{"name": "myObject2", "parents": ["PARENT_FOLDER_ID"]}'
Единственным изменением будет использование кавычек ("") в скобках для каждого идентификатора родительской папки, потому что API ожидает массив строк для родительского поля (каждая строка для каждого идентификатора родительской папки) [ 1].
Для второй части возобновляемой загрузки (загрузки файла) вам просто нужно получить файл, который вы хотите загрузить, и отправить его как тело запроса с параметром «data» в запросе, подобным этому:
uri = response.headers['Location']
headers = {
'Content-Length': "2000000",
'Content-Type': "image/jpeg"
}
#Open the file and stored it in data2
in_file = open("filepath to the file", "rb") # opening for [r]eading as [b]inary
data2 = in_file.read()
#Send the file in the request
response = requests.request(
"PUT", uri, data=data2, headers=headers)
Используя функцию open () [2] с путем к файлу, включая имя файла (относительное или абсолютное) и используя «rb» в качестве второго параметра для чтения файла в двоичном режиме, вы получите необработанный двоичный файл (файл) объект) и применив к нему функцию read () [3], вы получите двоичные данные, которые и есть то, что ожидает запрос в теле запроса (параметр data).
Я проверил приведенный выше код, загрузив изображение в определенную папку, и оно заработало. Не забудьте изменить тип контента.
[1] https://developers.google.com/drive/api/v3/reference/files
[2] https://docs.python.org/3/library/functions.html#open
[3] https://www.w3schools.com/python/python_file_open.asp