2016-03-25 14 views
1

Ich kann eine Datei auf Google Drive mit der Python-API wie in this example mit der MediaUpload Klasse bereitgestellt hochladen.Google Drive Python API; Laden Sie ein Medienobjekt, das keine Datei ist

Aber ich muss eine Datei hochladen, die dynamisch erstellt wird, und ich möchte es nicht speichern und erneut öffnen.

Es gibt keine solche Implementierung bereits vorhanden. This guide sagt ich muss eine Unterklasse von MediaUpload erstellen und muss die MediaUpload Schnittstelle vollständig implementieren.

Ich ging durch den Code und es ist wirklich verwirrend. Wenn jemand es bereits implementiert hat oder mir helfen könnte, bitte teilen Sie den Code.

Danke

+0

Wenn Sie sprechen über die Datei-like I/O, dann so etwas wie https://docs.python.org/2/library/stringio.html und/oder https: //docs.python. org/2/library/io.html kann helfen – woozyking

+2

Bei einem Blick auf die Dokumentation scheint es, dass sie eine MediaIoBaseUpload-Klasse bieten, die das Hochladen basierend auf einem Dateitypobjekt (einem suchbaren Stream) unterstützt. http://google-api-python-client.googlecode.com/hg/docs/epy/apiclient.http.MediaIoBaseUpload-class.html – clockwatcher

+0

@ clockwatcher Danke für das Aufzeigen. Ich dachte, ich müsste alles noch einmal umschreiben. herausgefunden, wie es funktioniert. :) – neo

Antwort

2

meine eigene Frage zu beantworten

Was ich von einer URL zu bekommen war, um eine Datei tun wollte, und laden zu fahren.

Verwendet MediaIoBaseUpload Klasse statt MediaUpload Klasse.

response = urllib2.urlopen(url) 
fh = BytesIO(response.read()) 
media_body = MediaIoBaseUpload(fh, mimetype='image/jpeg', 
       chunksize=1024*1024, resumable=True) 
body = { 
     'title': 'pic.jpg' 
    } 
drive_service.files().insert(body=body, media_body=media_body).execute()