Как загрузить файл на Google Drive, используя python с запросом POST? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь загрузить файл на Google Drive, используя запрос HTTP POST без Google libs.

Итак, вот что я нашел здесь:

import json
import requests

headers = {"Authorization": "Bearer " + ACCESS_TOKEN}
para = {
    "title": "image_url.jpg",
    "parents": [{"id": "root"}, {"id": "### folder ID ###"}]
}
files = {
    "data": ("metadata", json.dumps(para), "application/json; charset=UTF-8"),
    "file": requests.get("image_url").content
}
response = requests.post("https://www.googleapis.com/upload/drive/v2/files?  uploadType=multipart", headers=headers, files=files)

return response 

Я пыталсянемного адаптировать его для локальных файлов и сделать что-то вроде этого:

def upload_file(access_token, filename, filepath, parentID = "root"):
    query_link = 'https://www.googleapis.com/upload/drive/v3/files'
    query_params = "?uploadType=multipart"
    link = '{0}{1}'.format(query_link, query_params)
    headers = {"Authorization": "Bearer " + access_token}
    meta_data = {
        "title": filename,
        "parents": [{"id": parentID}]
    }
    files = {
        "data": ("metadata", json.dumps(meta_data), "application/json; charset=UTF-8"),
        "file": open(filepath + "\\" + filename, 'rb')
    }
    response = requests.post(link, headers=headers, files=files)

Но все, что я получил, - это создание файлов без названия в моем каталоге, так что вы можете помочь мне это исправить?

1 Ответ

0 голосов
/ 03 мая 2019

Найденное решение.В третьей версии Google Drive API они использовали имя поля вместо заголовка, теперь все работает!

...