我希望将文件发送到网址,其中包含一些邮件参数,例如“chat_id”,“标题”,文件必须发送为“照片”字段名称。
但我发现只有方法只发送没有文件的POST参数或只发送没有POST参数和自定义文件名参数的文件。
此代码仅发送params
字段,但我还需要files
字段。
from urllib import parse, request
...
files={'photo': open('file.jpg','rb')}
params = parse.urlencode({'chat_id': chat_id, 'caption': 'test'})
#headers = {"Content-type": "multipart/form-data"}
req = request.Request(url, params.encode('ascii'))
response = request.urlopen(req)
print(response.read())
Python 3.4.2
答案 0 :(得分:1)
确定。我找到了解决方案
我安装了外部lib Requests: HTTP for Humans
现在我正在使用requests
import requests
...
url = 'https://api.telegram.org/bot'+self.token+'/sendPhoto' #'/sendmessage'
print('request to '+url+' with params '+chat_id+' ' + text)
headers = {'Content-Type': 'multipart/form-data'}
files = {'photo': open('file.jpg', 'rb')}
params = {'chat_id': chat_id, 'caption': text}
r = requests.post(url, files=files, params=params)
print(r.text)