我正在使用Telegram从IP-cam发送图片。 这可以在raspberry-PI上完成,如下所示:
curl -s -X POST“https://api.telegram.org/bot123456789:yourcode/sendPhoto” - F chat_id = 123456789 -F photo =“@ / volume1 / Data / temp / picture.jpeg”
说明:图片位于“/ volume1 / Data / temp”文件夹中,名称为“picture.jpeg”
我想在Windows上做同样的事情我不断收到消息“{”ok“:false,”error_code“:400,”description“:”错误的请求:错误的持久性file_id指定:包含错误的字符或错误的长度“}”
这与我在谷歌浏览器地址中传输的内容完全相同(完全针对机器人,您的代码和chatid):
https://api.telegram.org/bot123456789:yourcode/sendPhoto?chat_id=123456789&photo= “@ C:/temp/picture.jpeg”
我可以向你保证,自动化没有问题(填写文件:/// C:浏览器中的/temp/picture.jpeg显示图片)。 我已经尝试了各种各样的变体(有和没有@,有和没有“等等。)我无法使它工作。
它适用于发送文字:
..... /的sendMessage chat_id = 123456789&安培;文本=”你好”
结果是我在浏览器中收到消息“hello”:{“ok”:true,“result”:{“message_id”......
我确信我很接近,但不知道如何准确定义“图片”。
所以问题是:使用api.telegram.org通过Windows浏览器使用Telegram传输图片的确切方法是什么?请提供一个有效的示例。
提前感谢您的帮助!
答案 0 :(得分:0)
当您在chrome(或任何其他浏览器)中传输该URL时,您实际上使用的是“GET”方法,而不是用于发送带有“file_id”的图像。
但是当你想从你的电脑上传文件时,你应该使用“POST”方法发送它。
最简单的方法是使用HTML表单。
举个例子:
<form action="https://api.telegram.org/bot2222222:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendPhoto" method="post" enctype="multipart/form-data">
<input type="text" name="chat_id" value="11111111" />
<input type="file" name="photo" />
<input type="submit" value="send" />
</form>
修改强>
此外,如果您想从命令行执行此操作,则可以使用Windows版本的cUrl。您可以从以下链接下载: Windows cUrl
或在Windows PowerShell中使用Invoke-RestMethod。 示例命令:
Invoke-RestMethod -Uri $uri -Method Post -InFile $filePath -ContentType "multipart/form-data"
答案 1 :(得分:-1)
我认为您需要先进行转换,然后再将文件作为格式数据发送。因为浏览器可能无法理解您要发送的内容(文件URI 不是文件)作为url。您需要将图像转换为数据URI。 有关此的更多信息,您可以进入这里, https://www.tutorialspoint.com/convert-image-to-data-uri-with-javascript#:~:text=To%20convert%20image%20from%20an,the%20toDataURL%20method%20on%20it。我以为可能会清楚您需要做什么。可以通过url或发布数据来发送此转换。