在cURL上使用Telegram Bot发送图像

时间:2020-05-18 05:53:49

标签: c++ curl telegram

我已经在VC ++上使用cURL创建了一个程序,以使用Telegram Bot API发送消息,并成功完成了该程序。我想发送图像但不基于网址,因为我已经对其进行了测试并且可以工作,但问题是,我想从本地文件夹发送图像,但是我下面的代码无法读取字符串,即图片的文件名作为图片。

CURL *curl;
CURLcode curl_res;
string rBuffer;
int retval=-1;

curl = curl_easy_init();
if (curl)
    {
        const int timeout = 30000;
        curl_easy_setopt(curl, CURLOPT_URL, "https://api.telegram.org/bot<bot-id>/sendPhoto?");
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.5");
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "chat_id=<chat_id>&photo=c:\\test.jpg");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CallBack);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &rBuffer);
        curl_easy_setopt(curl, CURLOPT_POST, 1L);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout / 1000);

        curl_res = curl_easy_perform(curl);
        if (CURLE_OK != curl_res)
            retval = curl_res;

        curl_easy_cleanup(curl);
    }

为什么我选择这种方法来获取图像,因为它已经对我有用。事实是,我正在创建此文件并将其编译为dll,以供非电报bot或cURL友好程序使用。因此,与其在该程序上创建一个占用大量字符串大小的报告,不如对其进行快照(该程序能够执行该操作),并通过电报机器人将截图发送给我们,而不是上传图像,然后使用链接进行电报,为什么不直接发送。

我希望有人可以帮助我。我真的很感激。

0 个答案:

没有答案