有没有会VB.NET企业微信上传推送文件的代码?只找到了python的代码测试是成功的
import requests
import hashlib
import base64
class WeChatBot:
def __init__(self, key):
self.key = key
self.wxurl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=' + key
def send_file(self, name, filepath):
"""
:param name: 发送的文件名字,用于在企业微信上展示的
:param filepath: 本地实际文件路径
"""
fl = open(filepath, 'rb')
files = {'files': (name, fl, 'application/octet-stream', {'Expires': '0'})}
print(files)
url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=' + self.key + '&type=file'
req = requests.post(url, files=files).json()
# 把文件上送至企业微信服务器,生成media_id
if req['media_id'] is not None:
send_json = {
"msgtype": "file",
"file": {
"media_id": req['media_id']
}
}
print(send_json)
requests.post(self.wxurl, json=send_json)
def send_message(self, content='', mentioned_list=[], mentioned_mobile_list=[]):
"""
此方法用于发送文字消息
:param content: 文字内容
:param mentioned_list: (不是必填项)userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list
:param mentioned_mobile_list:(不是必填项)手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人
"""
data = {
"msgtype": "text",
"text": {
"content": content,
"mentioned_list": mentioned_list,
"mentioned_mobile_list": mentioned_mobile_list
}
}
res = requests.post(self.wxurl, json=data).json()
print(res)
def send_img(self, filename):
"""
此方法用于发送图片
:param filename: 图片文件的路径
"""
png = filename
with open(png, "rb") as f:
md = hashlib.md5(f.read())
res1 = md.hexdigest()
with open(png, "rb") as f:
base64_data = base64.b64encode(f.read())
im_json = {
"msgtype": "image",
"image": {
"base64": str(base64_data, 'utf-8'),
"md5": res1
}
}
requests.post(self.wxurl, json=im_json)
if __name__ == '__main__':
bot = WeChatBot('这里填自己的KEY')
bot.send_message(content='测试消息')
bot.send_img(filename='./world/121.jpg')
bot.send_file(name='测试.txt', filepath='./x.txt')
Public Shared Function Post(ByVal url As String, ByVal FileName As String) As String
Dim result As String = ""
'url是请求地址 ,data是参数
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = WebRequest.Create(url)
'设置Post请求方式
request.Method = "POST"
'参数内容类型
request.ContentType = "application/octet-stream"
'request.Accept = "Content-Disposition: form-data; name='media';filename='wework.txt'"
request.Headers.Add("Content-Disposition", " form-data; name='media';filename='wework.txt'")
'将URL编码后的参数字符串转化为字节
Dim enCoding As New UTF8Encoding()
Using reader As New StreamReader(FileName, False)
result = reader.ReadToEnd()
End Using
Dim bys As Byte() = Encoding.GetBytes(result)
'设置POST请求的 ContentLength
request.ContentLength = bys.Length
'获得请求数据流
Dim newStream As Stream = request.GetRequestStream()
newStream.Write(bys, 0, bys.Length)
newStream.Close()
'获得响应数据流
Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
Return sr.ReadToEnd
End Function
Function PushFile(ByVal media_id As String) As String
Const SendText As String = "{""msgtype"": ""file"",""file"" : { ""media_id"": ""文件id""}}"
Dim http = CreateObject("MSXML2.ServerXMLHTTP")
Str1 = Replace(SendText, "文件id", media_id)
MsgBox(Str1)
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=******你的KEY*****"
http.Open("Post", url, False)
http.send(Str1)
rs = http.responseText '返回值
If http.Status = 200 Then
Str2 = http.responseText
End If
If InStr(Str2, ErrCode) = 0 Then MsgBox("错误信息:>>>" & rs & "<<<")
PushFile = Nothing
End Function
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim str As String
str = Post("https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=******你的KEY*****&type=file", "c:\x.txt")
TextBox1.Text = str
'解析返回的json对象Key值
Dim j As Object = New System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(Of Object)(str)
Dim media_id = j("media_id")
'MsgBox(j("media_id"))
TextBox2.Text = media_id
PushFile(TextBox2.Text)
End Sub
可以推送但是不显示 文件名字