2016-03-25 12 views
1

MediaUploadクラスを使用してthis exampleで提供されているpython APIを使用してGoogleドライブにファイルをアップロードできます。GoogleドライブPython API。ファイルではないメディアオブジェクトをアップロードしてください

しかし、私は動的に作成されたファイルをアップロードする必要があり、保存して再度開く必要はありません。

このような実装は既に存在しません。 This guideは、MediaUploadのサブクラスを作成する必要があり、MediaUploadインターフェイスを完全に実装する必要があると言います。

私はコードを調べたところ、本当に混乱しています。既に誰かがそれを実装していたり​​、これを手伝ってくれたら、コードを分けてください。

+0

ファイル形式のI/Oについて言えば、https://docs.python.org/2/library/stringio.htmlやhttps://docs.pythonのようなものです。 org/2/library/io.htmlが役に立ちます – woozyking

+2

ドキュメントを見ると、ファイルタイプオブジェクト(シーク可能なストリーム)に基づいてアップロードをサポートするMediaIoBaseUploadクラスが提供されているようです。 http://google-api-python-client.googlecode.com/hg/docs/epy/apiclient.http.MediaIoBaseUpload-class.html – clockwatcher

+0

@clockwatcherありがとうございます。私はすべてをもう一度書き直さなければならないと思った。 それを動作させる方法を解説しました。 :) – neo

答えて

2

は私がやりたいこと自分の質問

に回答いただき、ありがとうございURLからファイルを取得し、ドライブにアップロードすることでした。

MediaUploadクラスの代わりにMediaIoBaseUploadクラスを使用しました。

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() 
関連する問題