これを行う唯一の方法は、URL の本文をダウンロードしてアップロードできるようにすることです。
問題は、 を取るフォームがfile
HTTP POST でファイルの本体を予期していることです。代わりに URL を受け取り、それ自体でフェッチを行うフォームを作成することもできますが、それは、ファイルを受け取るものとは異なるフォームと要求になるでしょう (または、オプションのファイルとオプションの URL)。
もちろん、ダウンロードしてファイルに保存する必要はありません。メモリにダウンロードするだけです:
urlsrc = 'http://example.com/source'
rsrc = requests.get(urlsrc)
urldst = 'http://example.com/dest'
rdst = requests.post(urldst, files={'file': rsrc.content})
もちろん、場合によっては、常にファイル名やContent-Type
. または、巨大なファイルの場合、ファイル全体を一度にダウンロードしてからアップロードすることなく、あるサーバーから別のサーバーにストリーミングしたい場合があります。そのようなことはすべて手動で行う必要がありますが、ほとんどすべてが簡単でrequests
、ドキュメントで詳しく説明されています。
* そうですね、最後の例は簡単read
ではありません… リクエストやリクエストから raw ソケットラッパーを取得し、write
デッドロックしないようにする必要があります…</p>