サーバーAからファイルをダウンロードするGET要求を実行し、すぐにファイルをサーバーBにPOSTしようとしています。Pythonリクエストでファイルを取得してPOSTリクエストにストリームする方法はありますか?
私はストリーミングでそれを行う方法を探していますPOST要求の入力へのGET要求の出力。
following articleでは、nodeJSでこれについて説明しています。 Python Requestsでこれをどうすればいいのですか?
サーバーAからファイルをダウンロードするGET要求を実行し、すぐにファイルをサーバーBにPOSTしようとしています。Pythonリクエストでファイルを取得してPOSTリクエストにストリームする方法はありますか?
私はストリーミングでそれを行う方法を探していますPOST要求の入力へのGET要求の出力。
following articleでは、nodeJSでこれについて説明しています。 Python Requestsでこれをどうすればいいのですか?
POSTリクエストにファイルとしてあなたは、ストリーミングGET要求から生の接続オブジェクトを渡すことができます:
r = requests.get(get_url, stream=True)
if r.status_code == 200:
r.raw.decode_content = True # decompress as you read
files = {
'fieldname': ('filename', r.raw, r.headers['Content-Type'])
}
requests.post(post_url, files=files)
response.raw
ファイルのようなオブジェクトを使用するには、デフォルトでは、圧縮されたデコードしません。 (GZIPまたはdeflateを使用して)応答を返すことができますが、の属性をdecode_content
属性に設定すると、デコード自体を制御することができます(要求はFalse
に設定されます)。
私はファイルがmultipart/form-data
要求の一部としてPOSTされたと仮定しました。データを直接送信する必要がある場合は、代わりにdata=r.raw
を使用してください。
は魅力のように動作します。ありがとう@Martijn –
少しわかりますか?同時にリクエストを取得しようとしているのですが、それをPOSTリクエストにパイプしますか?私が尋ねる理由は、node.jsを参照していて、GETコンテンツを同時にPOSTリクエストにパイプできるはずだからです。 Pythonもそれを行うことができますが、それはちょっと難しいですし、それは単に '要求'以上です。 –
それは可能ですが、私はそれに設定されていません。私はMartijnの答えを試してみるつもりです –