2018.03.15:GitHub下載代碼 git
官網:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738726 仔細閱讀完咱們的文檔github
作測試的時候常常報錯。 有幾個須要注意的:json
①但凡涉及到Post傳值的時候,請拼接好你的字符串app
②Post傳值的數據必定要是josn格式ide
步驟:工具
①建立咱們的 APIpost
②新增臨時素材 須要表單提交文件來進行新增 開發工具
HttpRequestPost方法:完成這個方法有不少,能夠本身百度一下測試
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
/// <summary> /// From表單上傳一個多媒體文件 /// </summary> /// <param name="url">地址</param> /// <param name="typeName">類型名稱</param> /// <param name="fileName">文件名稱</param> /// <param name="fs">輸入流</param> /// <param name="encoding">編碼</param> /// <returns></returns> public static string HttpRequestPost(string url, string typeName, string fileName, Stream fs, string encoding = "UTF-8") { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //建立url request.Method = "POST"; request.Timeout = 10000; var postStream = new MemoryStream();//建立內存流來進行數據處理 #region 處理Form表單文件上傳 //經過表單上傳文件 string boundary = "----" + DateTime.Now.Ticks.ToString("x"); //頭部 string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n"; try { string formdata = string.Format(formdataTemplate, typeName, fileName); var formdataBytes = Encoding.ASCII.GetBytes(postStream.Length == 0 ? formdata.Substring(2, formdata.Length - 2) : formdata);//第一行不須要換行 postStream.Write(formdataBytes, 0, formdataBytes.Length); //填充內存流 //寫入文件 byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead=fs.Read(buffer,0,buffer.Length))!=0) //填充輸入流 { postStream.Write(buffer, 0, bytesRead); } } catch (Exception ex) { throw ex; } //結尾 var footer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); postStream.Write(footer, 0, footer.Length); request.ContentType = string.Format("multipart/form-data; boundary={0}", boundary); #endregion request.ContentLength = postStream != null ? postStream.Length : 0; //設置類容長度 if (postStream!=null) { postStream.Position = 0; //直接寫入流 Stream requestStream = request.GetRequestStream(); byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0) { requestStream.Write(buffer, 0, bytesRead); } postStream.Close();//關閉文件訪問 } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (Stream responseStream=response.GetResponseStream()) { using (StreamReader myStreamReader = new StreamReader(responseStream, Encoding.GetEncoding(encoding))) { string retString = myStreamReader.ReadToEnd(); return retString; //返回結果 } } }
③建立咱們的控制器網站
須要兩個方法,一個顯示上傳文件的,一個是接收的。
UpFiles視圖:
Post裏面:
發佈項目,打開開發工具
成功了就會顯示media_id.
④獲取臨時素材 media_id能夠由上面獲得
⑤新增永久素材
⑥上傳永久圖文素材
WxArtcle類:
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
/// <summary> /// 回覆用戶的消息類型 /// </summary> public enum WxArtcleType { News, //圖文消息 Text, //文本 Voice, //語音 Image, //圖片 Video, //視頻 Music, //音樂 } /// <summary> /// 圖文消息 /// </summary> public class WxArtcle { /// <summary> /// 圖文消息縮略圖的media_id,能夠在基礎支持-上傳多媒體文件接口中得到 /// </summary> public string thumb_media_id { set; get; } /// <summary> /// 圖文消息的做者 /// </summary> public string author { set; get; } /// <summary> /// 圖文消息的標題 /// </summary> public string title { set; get; } /// <summary> /// 在圖文消息頁面點擊「閱讀原文」後的頁面 /// </summary> public string content_source_url { set; get; } /// <summary> /// 圖文消息頁面的內容,支持HTML標籤 /// </summary> public string content { set; get; } /// <summary> /// 圖文消息的描述 /// </summary> public string digest { set; get; } /// <summary> /// 是否顯示封面,1爲顯示,0爲不顯示 /// </summary> public string show_cover_pic { set; get; } }
⑦獲取素材總數
⑧獲取素材列表 有的類型返回的json格式會不同,具體看官網
⑨刪除素材
總結:只有當咱們須要新加 臨時/永久 素材的時候,咱們才須要運行 改網站進行長傳,其餘的功能能夠寫在別的控制器中作演示。