Ich habe den folgenden Code geschrieben, um ein Bild auf meine eigene Google Drive mit einem service account hochladen.Einfache API-Image-Upload auf Google Drive
Mein Code wird erfolgreich zurückgegeben und gibt mir eine ID
zurück, aber auf meinem tatsächlichen Google Drive ist nichts zu sehen.
from django.conf import settings
import os
from apiclient.discovery import build
from apiclient.http import MediaFileUpload
from oauth2client.service_account import ServiceAccountCredentials
def get_service(api_name, api_version, scope, key_file_location):
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_file_location, scopes=scope)
service = build(api_name, api_version, credentials=credentials)
return service
def setup_upload():
scope = ['https://www.googleapis.com/auth/drive']
key_file_location = os.path.join(os.path.dirname(settings.BASE_DIR), 'common/my-json-file.json')
service = get_service('drive', 'v3', scope, key_file_location)
file_path = os.path.join(os.path.dirname(settings.BASE_DIR), 'common/apple.png')
file_metadata = {'name': 'apple.png'}
media = MediaFileUpload(file_path, mimetype="image/png")
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
print(file.get('id')) #this returns an actual ID
setup_upload()
Ich habe eine lange ID
String zurück aus der letzten Zeile setup_upload()
bekommen. Aber auf meinem tatsächlichen Google Drive ist nichts zu sehen. Ich erwarte, dass die Datei apple.png
in meinem Home-Verzeichnis erscheint.
Was fehlt mir hier?
Vielen Dank für die Antwort. Könntest du erklären, wie genau ich dem Dienstkonto Zugriff auf den Ort geben kann, an den ich schreiben möchte? Ich dachte, die 'scope' -Variable wäre genug und würde automatisch in den root google drive-Ordner gehen. – qarthandso