C#-微信公眾平台接口-上傳臨時素材


最煩做微信公眾平台的東西。。文檔說得不清不楚,又沒示例代碼,只能自己 慢慢搜索,弄了一晚上,基本弄出來了,把本地的圖片上傳到微信的臨時素材那里,返回媒體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);
            } 

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM