2017-07-17 22 views
0

Pythonでリクエストlibを使用してサーバにファイルをアップロードしています。私はそのドキュメントといくつかのstackoverflowの質問を読んで、次のコードを実装:Pythonリクエストのポストリクエストでステータスを返す405

url = "http://example.com/file.csv" 
id = "user-id" 
password = "password" 
headers = {'content-type': 'application/x-www-form-urlencoded'} 

with open(file_path, 'rb') as f: 
    response = requests.post(url=url, files={'file':f}, auth=HTTPBasicAuth(username=id, password=password),headers=headers) 

しかし、このコードは動作していない、405とMethod Not Allowedを返すresponse.reasonを返すresponse.status_code。私は、端末上でcurlコマンドを使用してファイルをアップロードするとそれが正常に動作し、ファイルがアップロードされます:

curl -u user-id:password -T file/path/on/local/machine/file.csv "http://example.com/file.csv" 

は、誰かがここで助けてください。

+1

なぜコンテンツタイプを設定していますか?これは、ファイルアップロードの間違ったコンテンツタイプです。 'files'はあなたのためにコンテンツタイプを扱います。 –

+0

@MartijnPietersは迅速な対応に感謝します。トレチン溶液が働いた。私はこれらのサーバーのものに新しいです。 – sdream

答えて

1

関連する質問here。実際にはcurl --upload-filePUTではなく、POSTを実行します。カールの模様を模倣したい場合は、次のように試してみてください。

with open(file_path, 'rb') as f: 
    response = requests.put(url=url, files={'file':f}, auth=HTTPBasicAuth(username=id, password=password), headers=headers) 
+0

ありがとう@それは動作します。私はこれらのサーバーのものに新しいです。 – sdream

関連する問題