2017-07-17 176 views
0

我使用Python中的請求lib將文件上傳到服務器。我讀它的文檔和一些計算器問題,並實現以下代碼:使用Python請求lib返回狀態的發佈請求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) 

但這種代碼是不工作,response.status_code返回405和response.reason返回Method Not Allowed。當我上傳文件在終端上使用curl命令它工作正常,文件上傳:

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

有人可以請幫助這裏。

+1

你爲什麼設置內容類型?這是文件上傳的錯誤內容類型。 'files'負責你的內容類型。 –

+0

@MartijnPieters感謝您的快速響應。 Trein解決方案工作。我對這些服務器的東西很陌生。 – sdream

回答

1

相關問題here。實際上,curl --upload-file執行PUT而不是POST。如果你想模仿curl做什麼,你可能想嘗試:

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

謝謝@Trein它的工作原理。我對這些服務器的東西很陌生。 – sdream