通过REST API调用使用Python请求上载多个文件

时间:2017-06-13 11:03:20

标签: python rest python-requests

我可以使用以下代码上传单个文件:

import requests

notes = {'notes_pdf':'notes1.pdf','name':'notes_name1'}
url = "https://www.example.in/notes/api/v1/uploadNotes"

files = {'notes_pdf': open(notes['notes_pdf'], 'rb')}
response = requests.request("POST", url, params=querystring, files=files, data=notes)

return response.json()

现在,我想发送多个文件,外部REST API以下列格式接受notes对象。

multiple_notes = [{'notes_pdf':'notes1.pdf','name':'notes_name1'}, {'notes_pdf':'notes2.pdf','name':'notes_name2'}]

我无法以这种方式发送对象。任何帮助将受到高度赞赏。感谢。

2 个答案:

答案 0 :(得分:0)

我不知道这个API接受相同的文件对象名称? 如果您的API接受notes1.pdf notes2.pdf等文件名,则可以使用以下代码:

file_list = [note['notes_pdf'] for note in multiple_notes]  # get file name
files = {}
for file in file_list:
    files[file]=open(file, 'rb')
res = requests.post(url, files=files, ...)

答案 1 :(得分:0)

如果您想要提及notes[0]['notes_pdf']notes[1]['notes_pdf'],那么它应该有效:

multiple_notes = ({'notes_pdf':'notes1.pdf','name':'notes_name1'}, 
                  {'notes_pdf':'notes2.pdf','name':'notes_name2'})

根据requests documentation,您可以在POST请求中使用元组。