Python 是什么使';请求实体太大';向电报发送图像时出错?
文件大小:51.2kb 正在尝试发送:Python 是什么使';请求实体太大';向电报发送图像时出错?,python,python-3.x,python-requests,telegram,telegram-bot,Python,Python 3.x,Python Requests,Telegram,Telegram Bot,文件大小:51.2kb 正在尝试发送: >>发送\u img\u url='https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXX/sendPhoto' >>>img_name='C:/Users/Administrator/Downloads/WhatsApp Image 2019-05-30于20.54.40.jpeg' >>>r=requests.post(send_img_url,data={'chat_id':'-351543550','ph
>>发送\u img\u url='https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXX/sendPhoto'
>>>img_name='C:/Users/Administrator/Downloads/WhatsApp Image 2019-05-30于20.54.40.jpeg'
>>>r=requests.post(send_img_url,data={'chat_id':'-351543550','photo':open(img_name,'rb'))
>>>r
>>>r.理性
“请求实体太大”
>>>r.内容
b“
>>>
我还尝试了其他一些请求,如:
photo=open(('C:/Users/Administrator/Downloads/WhatsAppImage.jpeg')。编码('utf-8'),'rb'))
r=requests.post(发送\u img\u url,数据={'chat\u id':'-351543550','photo':photo})
以及:
将io.open('C:/Users/Administrator/Downloads/WhatsAppImage.jpeg',encoding='utf-8',errors='ignore')作为f:
r=requests.post(send_img_url,data={'chat_id':'-351543550','photo':f})
最后一个选项给我下一个错误:
>>r
>>>r.理性
“错误请求”
你可能做错了
正如docs所说:
使用多部分/表单数据发布文件,通常通过浏览器上传文件。照片的最大大小为10 MB,其他文件的最大大小为50 MB
,通过使用data=
关键字参数,您正在使用form encoded
类型发送有效负载,而不是multipart/form data
尝试这样提出您的请求:
导入请求
聊天室id='-351543550'
url='1〕https://api.telegram.org/botXXXXXXXXXXXXXXX/sendPhoto?chat_id={}.格式(聊天室id)
filepath='C:\correct\path\to\your\file.jpg'
r=requests.post(url,files={“photo”:open(filepath,'rb')})#注意:文件,而不是数据
打印(r.状态\ U代码)
注意:您也可以使用以下方式发送聊天id
作为表单编码
参数
url='1〕https://api.telegram.org/botXXXXXXXXXXXXXXX/sendPhoto'
...
r=requests.post(url,数据={'chat_id':'-351543550'},文件={“photo”:open(文件路径,'rb')})
在我的例子中,由于西里尔文文件名的原因,伊万·维诺格拉多夫提出的解决方案不起作用。将路径更改为拉丁文修复了此问题。您无法将图像解析为UTF8。@SLaks,因此我必须做什么?这两个选项都会给我错误:400>>r.reason'Bad Request'>>,以及r.text
的输出是什么?这是我的错误。今天下午,我发送消息的小组是一个ID,另一个ID。我不知道它们正在更改。无论如何,您应该使用文件=
,否则您仍然会收到413实体太大
ty,但您能告诉我更改ID组的原因吗?总是这样吗?你能举个例子吗?