Const botID = "botxxxxxxxxx"
Const chatID = "xxxxxx"
methodeName = "/sendPhoto?chat_id=" & chatID
Const sFolder = "C:\"
Const sFile = "GO.png"
Dim data
Set data = CreateObject("Scripting.Dictionary")
data.Add "chatID", chatID
data.Add "text", "TES"
Dim BOUNDARY, s, n
For n = 1 To 16: s = s & Chr(65 + Int(Rnd * 25)): Next
BOUNDARY = s & CDbl(Now)
Dim part, ado
For Each key In data.keys
part = part & "--" & BOUNDARY & vbCrLf
part = part & "Content-Disposition: form-data; name=""" & key & """" & vbCrLf & vbCrLf
part = part & data(key) & vbCrLf
Next
' filename
part = part & "--" & BOUNDARY & vbCrLf
part = part & "Content-Disposition: form-data; name=""photo""; filename=""" & sFile & """" & vbCrLf & vbCrLf
'msgbox part
' read jpg file as binary
Dim jpg
Set ado = CreateObject("ADODB.Stream")
ado.Type = 1 'binary
ado.Open
ado.LoadFromFile sFolder & sFile
ado.Position = 0
jpg = ado.read
ado.Close
' combine part, jpg , end
ado.Open
ado.Position = 0
ado.Type = 1 ' binary
ado.Write ToBytes(part)
ado.Write jpg
ado.Write ToBytes(vbCrLf & "--" & BOUNDARY & "--")
ado.Position = 0
Dim req, reqURL
Set req = CreateObject("MSXML2.XMLHTTP")
reqURL = URL & botID & methodeName
'MsgBox reqURL
With req
.Open "POST", reqURL, False
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & BOUNDARY
.send ado.read
'MsgBox BOUNDARY
'MsgBox .responseText
End With
Function ToBytes(str)
Dim ado
Set ado = CreateObject("ADODB.Stream")
ado.Open
ado.Type = 2 ' text
ado.Charset = "_autodetect"
ado.WriteText str
ado.Position = 0
ado.Type = 1
ToBytes = ado.read
ado.Close
End Function