Python 是什么使';请求实体太大';向电报发送图像时出错?

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

文件大小: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','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组的原因吗?总是这样吗?你能举个例子吗?