2017-05-01 55 views
0

我想發送一個excel文件到POST請求中的多部分/表單數據內容類型的服務器。我收到一個錯誤:如何使用POST請求在python中發送multipart/form-data中的excel文件?

too many values to unpack

可能是什麼原因?下面是我想做的要求:

#Data = get_data('C:\foo.xls') 
#print Data 
Data = open('C:\foo.xls', 'rb') 
print Data 

headers = { 
     'access-control-allow-origin': '*', 
     'accept': 'application/json', 
     'content-type': 'multipart/form-data', 
     'authorization': 'Basic xxxxxxxxx' 
     } 
R = requests.post('http://testserver:8080/v1/readyapi/executions/'+executionId+'/files', headers=headers, params=params, files=Data) 
print R.content 

以下是錯誤:

Traceback (most recent call last): 
    (body, content_type) = self._encode_files(files, data) 
    File "C:\Python27\lib\site-packages\requests\models.py", line 132, in _encode_files 
    for (k, v) in files: 
ValueError: too many values to unpack 

我不能用自己弄清楚。嘗試了幾件事,沒有奏效。有人可以請指教嗎?

回答

0

試試下面的代碼

Data = open('C:\foo.xls', 'rb') 
headers = { 
     'access-control-allow-origin': '*', 
     'accept': 'application/json', 
     'content-type': 'multipart/form-data', 
     'authorization': 'Basic xxxxxxxxx' 
     } 
files = {"file_name": Data} 
url = 'http://testserver:8080/v1/readyapi/executions/'+executionId+'/files' 
R = requests.post(url, headers=headers, params=params, files=files) 
print R.content 

您必須傳遞文件參數作爲一個字典 或 你也可以嘗試像下面

files = {'file': ('foo.xls', open('foo.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})} 

參考:http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file

+0

試了一下。獲取「錯誤請求」

訪問/ v1/readyapi/executions/4d1c7e9b-55c8-4c9b-8f91-42aec0c29a37 /文件時出現問題。原因:

 Bad Request

Meet101

相關問題