Как я могу отправить местное изображение с помощью бота Telegram - PullRequest
0 голосов
/ 06 апреля 2020

Я использую следующий код для отправки локального изображения.

Преобразование файла изображения в base64> отправка через http multipart / form-data form

Знаете ли вы, почему это не удалось? Пожалуйста, ответь мне. Спасибо

текст ответа = {"ok": false, "код_ошибки": 504, "description": "Тайм-аут шлюза"}

Sub telegram_SendPhoto()

    botid = Cells(1, 2) 'my bot id
    apikey = Cells(2, 2) 'token
    boundary = "287032381131322" 
    filebase64 = ConvertFileToBase64("C:\Users\youngsu.jeong\Desktop\3.png") 'local file to send

    strPostData = "--" & boundary & "\r\n" & "Content-Disposition: form-data; name=""chat_id""" & "\r\n" & "\r\n" & botid & "\r\n" & _
                  "--" & boundary & "\r\n" & "Content-Disposition: form-data; name=""photo""; filename=""1.txt""" & "\r\n" & _
                  "Content-Type: image/png" & "\r\n" & "\r\n" & filebase64 & "\r\n" & _
                  "--" & boundary & "--"

    Set objRequest = CreateObject("MSXML2.XMLHTTP")
    With objRequest
      .Open "POST", "https://api.telegram.org/bot" & apikey & "/sendPhoto?", False
      .SetRequestHeader "Content-Type", "multipart/form-data; boundary=287032381131322"
      .Send (strPostData)
       GetSessionId = .ResponseText
       Debug.Print GetSessionId
    End With

End Sub

Public Function ConvertFileToBase64(strFilePath As String) As String

    Const UseBinaryStreamType = 1

    Dim streamInput: Set streamInput = CreateObject("ADODB.Stream")
    Dim xmlDoc: Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    Dim xmlElem: Set xmlElem = xmlDoc.createElement("tmp")

    streamInput.Open
    streamInput.Type = UseBinaryStreamType
    streamInput.LoadFromFile strFilePath
    xmlElem.DataType = "bin.base64"
    xmlElem.nodeTypedValue = streamInput.Read
    ConvertFileToBase64 = Replace(xmlElem.Text, vbLf, "")

    Set streamInput = Nothing
    Set xmlDoc = Nothing
    Set xmlElem = Nothing

End Function

strPostData is как показано ниже

'- 287032381131322 Расположение содержимого: данные формы; name = "chat_id"

842411059

- 287032381131322

Content-Disposition: form-data; Name = "фото"; имя файла = "1.png" Content-Type: изображение / PNG

1022 * iVBORw0KGgoAAAANSUhEUgAAAEAAAAAvCAYAAABTy8xRAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAANFSURBVGhD7ZhfT9NQFMDR7yELYOL38MHEBxOf9AOIX8AY8QUVjYkvxgdBWQQJMwGnEYFNs2kcylQ2w7I / cerAgYmDGGFx4AD5E4 + 93e5sb8 + 9XaVby + xJfsnac0577o / 1rqGp6dEmEPaNbNkaOicPXp1uP / 1AC + 2KamgEXp1uP / 1AC + 2KamgEXp1uPy2wO + jwCnh1uv20wO6gwyvg1en20yQt5LH / 8XYFLF9rNIMzYD1KsB4ZmmQbWBwBNhfwz9CLszdkcQRYLEAPzcKqhTazF2RxBNhcgB6ahVNokm1gaWgBRmAvgNXsJRwB2EkRPAHseaMo71FPHAHYSRG8wdnzRlHeo544Apr9v8AIB3wbKrAau6MScPLtFhjhxJtNFViNndEIYO3wYP / yLFjPbnH5NytgeaM4AjAB2GKsgB2WUB8B42tQc5AFs7DDEuoi4LQnBLXk + PUH0NodkUSsowunsMMS6iIAahyTL1 / Bk9S8rgR2WELDCCDhT32RJEQ1Q4loKAEkfEnyTaheQsMJIEEeh7aeKWj2rUnDrCvAhzYToQCPxwODg4NcksmkXJfJZNC8EhperxcudHaWj / 5GSUKEkYAPbSZCAW63G3p7e7nEYjG5Lp1Oo3klNIiM8 + c6ykfq8EsSWrqlb8L / KoCELzkn7Qn0ccCHNhPbCSBBHoeD8p5Qm9dpJUIBMzMzQvL5vFxXKBTQvBIa2 WwWhoeGykf8II9DW887zcBmIxRQq2B/BXjhk94TWgy+JxhFKCAajUIkEuGSy+XkuoWV7xD6PC2Exuv5BNy83wfeZ2MowXAIEvF4ha57fnD1pTWDm4Upe0Bs4RNcDQ0I+S1XAtwID8PlwB249NSNMpaYgGKxWCE6+xVct6Y1g1cD9nqthNRYIgDLUwKZSLmyFKncsiPAMgHBYBACgQAXsqOTyOZz8DD1QgiN8Q9hNE+JL2TKlaWwVACN7Z0dWFr9AR8X5+D5+ykYCI/ClTE3tPdfhMPXTsHqRrFcaX7sRkA1oAL6J0ega/Q2tN8tLfBQxzFoPXsUXGeOoCwWlmBxdVkIjW8/82iessLItEQAtkgRE7PT6POsxIo9oBocAXtbAPmniAisR40jQCNgC/4ANLqlr8Ak7vkAAAAASUVORK5CYII=
1025 * - 287032381131322 -
1027 *
...