Pythonのリクエストモジュールを使用してPUTでファイルをアップロードしようとしています。PythonリクエストPUTメソッドがゼロバイトファイルを作成します
私のコードはこれです:ファイルが作成され
with open(file, 'rb') as payload:
r = requests.put(url, data=payload, auth=('username', 'password'))
、私は応答200を取得していますが、それは0バイトです。私が何か間違っていないならば、私はバグhereに会ったと思う。
これが該当しますか?はいの場合は、私が試すことができる回避策はありますか?
は私もhttplib2ライブラリ
with open(file, 'rb') as payload:
h = httplib2.Http(".cache")
h.add_credentials('user', 'pass')
resp, content = h.request(url, "PUT", body=payload)
と同じしようとしましたが、要求は永遠にぶら下がったまま(再び0サイズのファイルが作成されます)。リクエストモジュールでも同じ問題がありますか?
[EDIT]いくつかの追加情報
PUTを受信しているサービスがESXiハイパーバイザ上で実行されています。 authed PUTリクエストを作成すると、リクエストのファイルを/ tmpに保存するという機能があります。サーバー側が働いています(同じ仕事をするperlスクリプトとカールでテストしています)。
アップロードされたファイルは、ローカルファイルシステムにある.tgzファイルで、URLは"http://esx-server/tmp/file.tgz"
の形式です。
このPUTを受信している何のサービス?ファイルはどこに作成されていますか? –
[編集]に[mcve]を含めるようにしてください。 – davidism
'data'を' files'に変更し、 '{'file':payload}'を渡してみてください。 –