使用Python请求将照片上传到Telegram API

dz6r00yl  于 2022-12-25  发布在  Python
关注(0)|答案(3)|浏览(184)

我已经看到了其他的问题,但我不知道我错在哪里。我可以上传一个文件没有问题使用PHP页面,看起来像这样:

<form action="https://api.telegram.org/bot190705145:AAH17XDRrPtDO1W1qHCoZ8i0_KqAAAAAAA/sendPhoto" method="post" enctype="multipart/form-data">

    <input type="text" name="chat_id" value="XXXXXXXX" />
    <input type="file" name="photo" />
    <input type="submit" value="send" />

</form>

但是我想在Python中使用Requests来完成它:

url = 'https://api.telegram.org/bot190705145:AAH17XDRrPtDO1W1qHCoZ8i0_KAAAAAAAAA/sendPho    to?chat_id=XXXXXXXXX'
files = {'file':open('/Users/stephen/desktop/Sample.png', 'rb')}
r = requests.post(url, files=files)

这会给我一个r.text错误:

u'{"ok":false,"error_code":400,"description":"[Error]: Bad Request: there is no photo in request"}'

我想我也错误地处理了chat_id参数,需要以不同的方式传递它。
任何指导非常感谢!

wgeznvg7

wgeznvg71#

这个错误有关到文件类型.象这样(在html):

<input type="file" name="photo" />

你应该改变文件类型到图像或照片,但我不知道python.

ig9co6j1

ig9co6j12#

您可以使用以下代码:

import requests

_TOKEN = "YOUR TOKEN HERE"

def send_photo(chat_id, image_path, image_caption=""):
    data = {"chat_id": chat_id, "caption": image_caption}
    url = "https://api.telegram.org/%s/sendPhoto" % _TOKEN
    with open(image_path, "rb") as image_file:
        ret = requests.post(url, data=data, files={"photo": image_file})
    return ret.json()

干杯

w46czmvw

w46czmvw3#

这是来自Ashwini Chaudhary的评论(它似乎是如此明显曾经说,非常感谢)。文件={“文件”:打开('/Users/stephen/desktop/Sample.png','rb')}到:files ={'photo':open('/Users/stephen/desktop/Sample.png','rb')}对我来说很有效,但似乎对其他几个人来说也是如此。谢谢

相关问题