2016-07-28 7 views
0

APIを使用してファイルをGoogleドライブにアップロードしようとしています。ファイルをバイナリに結合してPOSTリクエスト本文を作成する - python

彼らの仕様によると、POSTリクエストのボディは、次のようになります。

--foo_bar_baz 
Content-Type: application/json; charset=UTF-8 

{ 
    "name": "My File" 
} 

--foo_bar_baz 
Content-Type: image/jpeg 

JPEG data 
--foo_bar_baz-- 

ロード」(リクエストの体を構築する方法を、私はJPEGファイルへのパスを持っていると仮定すると、ファイルとその前に追加し、テキストを追加してください ")?

ありがとうございます。

PS:Googleクライアントライブラリを推奨しないでください。これは、リクエストの体を作ることだ:)

+1

申し訳ありませんが、実際のクライアントライブラリを使用しない理由はわかりません。 –

+0

@DanielRoseman別の話:)おそらくそれは他の場所で動作するはずですから。質問はリクエストを作成する方法です。それは知っておく価値があるはずです:) GDriveはコンテキストのためだけにあります。 – user2781994

答えて

0

Advanced Usageで説明したように、

要求すると、メモリにそれらを読まずに大量のストリームまたはファイルを送信することを可能にするストリーミングアップロードをサポートしています。ストリーミングおよびアップロードするには、単にあなたの体のためのファイルのようなオブジェクトを提供します。

with open('massive-body', 'rb') as f: 
    requests.post('http://some.url/streamed', data=f) 

しかし、注意してくださいそれが強く推奨されていることをバイナリモードでファイルを開くこと。これは、RequestsがContent-Lengthヘッダを提供しようとする可能性があり、そうであれば、この値はファイルのバイト数に設定されるからです。 テキストモードでファイルを開くと、エラーが発生することがあります。

このQuickstartも参考になります。

関連する問題