美文网首页
C#-微信公众平台接口-上传临时素材

C#-微信公众平台接口-上传临时素材

作者: niunan | 来源:发表于2017-09-20 22:42 被阅读178次

    最烦做微信公众平台的东西。。文档说得不清不楚,又没示例代码,只能自己 慢慢搜索,弄了一晚上,基本弄出来了,把本地的图片上传到微信的临时素材那里,返回媒体ID,用于其他操作,代码如下 :(自己导入相应的类System.Net.Http,JSON解析用的LitJson)
    /// <summary>
    /// 上传临时素材
    /// 返回media_id
    /// </summary>
    /// <param name="userid"></param>
    /// <returns></returns>
    public string UploadLinShiSuCai(int userid) {
    string imgpath = HttpContext.Current.Server.MapPath($"/upload/erweima/{userid}_2.png");
    string appid = WxPayConfig.APPID;
    string secret = WxPayConfig.APPSECRET;

            //1. 获取AccessToken(有效期7200秒,开发者必须在自己的服务全局缓存access_token)
            string url1 = $"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}";
            string result = HttpService.Get(url1);
            JsonData jd = JsonMapper.ToObject(result);
            string access_token = (string)jd["access_token"];
    
            string url2 = $"https://api.weixin.qq.com/cgi-bin/media/upload?access_token={access_token}&type=image";
    
            //图片转为流
            Image img = new Bitmap(imgpath);
            MemoryStream stream = new MemoryStream();
            img.Save(stream, ImageFormat.Png);
            BinaryReader br = new BinaryReader(stream);
            byte[] data = stream.ToArray();
            stream.Close();
    
    
    
            var boundary = "fbce142e-4e8e-4bf3-826d-cc3cf506cccc";
            var client = new HttpClient();
            client.DefaultRequestHeaders.Add("User-Agent", "KnowledgeCenter");
            client.DefaultRequestHeaders.Remove("Expect");
            client.DefaultRequestHeaders.Remove("Connection");
            client.DefaultRequestHeaders.ExpectContinue = false;
            client.DefaultRequestHeaders.ConnectionClose = true;
            var content = new MultipartFormDataContent(boundary);
            content.Headers.Remove("Content-Type");
            content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);
            var contentByte = new ByteArrayContent(data);
            content.Add(contentByte);
            contentByte.Headers.Remove("Content-Disposition");
            contentByte.Headers.TryAddWithoutValidation("Content-Disposition", $"form-data; name=\"media\";filename=\"{userid}_2.png\"" + "");
            contentByte.Headers.Remove("Content-Type");
            contentByte.Headers.TryAddWithoutValidation("Content-Type", "image/png");
            try
            {
                var result2 = client.PostAsync(url2, content);
                if (result2.Result.StatusCode != HttpStatusCode.OK)
                    throw new Exception(result2.Result.Content.ReadAsStringAsync().Result);
                string jsonstr = result2.Result.Content.ReadAsStringAsync().Result;
                JsonData jd2 = JsonMapper.ToObject(jsonstr);
                result = (string)jd2["media_id"];
                return result;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + ex.InnerException.Message);
            } 
    
        }

    相关文章

      网友评论

          本文标题:C#-微信公众平台接口-上传临时素材

          本文链接:https://www.haomeiwen.com/subject/xasasxtx.html