关于VB.NET企业微信推送文件的问题,如何解决?

有没有会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

可以推送但是不显示 文件名字