Я использую следующий код для отправки локального изображения.
Преобразование файла изображения в 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 *