如果
upload_file要作为文件,请使用:
files = {'upload_file': open('file.txt','rb')}values = {'DB': 'photcat', 'OUT': 'csv', 'SHORT': 'short'}r = requests.post(url, files=files, data=values)并且
requests将派遣一个多部分表单POST体与upload_file字段设置为内容file.txt的文件。
文件名将包含在特定字段的mime标头中:
>>> import requests>>> open('file.txt', 'wb') # create an empty demo file<_io.BufferedWriter name='file.txt'>>>> files = {'upload_file': open('file.txt', 'rb')}>>> print(requests.Request('POST', 'http://example.com', files=files).prepare().body.depre('ascii'))--c226ce13d09842658ffbd31e0563c6bdContent-Disposition: form-data; name="upload_file"; filename="file.txt"--c226ce13d09842658ffbd31e0563c6bd--
注意
filename="file.txt"参数。
files如果需要更多控制,则可以使用元组作为映射值,其中包含2到4个元素。第一个元素是文件名,其后是内容,以及可选的
content-type标头值和可选的附加标头映射:
files = {'upload_file': ('foobar.txt', open('file.txt','rb'), 'text/x-spam')}这将设置备用文件名和内容类型,而忽略可选的标题。
如果你要从文件中提取整个POST正文(未指定其他字段),则不要使用files参数,只需将文件直接发布为即可
data。然后,你可能还需要设置
Content-Type标题,否则将不会设置任何标题。请参阅Python请求-文件中的POST数据。



