微信開發 ---- 素材管理

2018.03.15GitHub下載代碼 git

官網:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738726      仔細閱讀完咱們的文檔github

 作測試的時候常常報錯。 有幾個須要注意的:json

①但凡涉及到Post傳值的時候,請拼接好你的字符串app

②Post傳值的數據必定要是josn格式ide

 

步驟:工具

①建立咱們的 APIpost

②新增臨時素材     須要表單提交文件來進行新增        開發工具

HttpRequestPost方法:完成這個方法有不少,能夠本身百度一下測試

/// <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; //返回結果
 } } }
View Code

③建立咱們的控制器網站

 

須要兩個方法,一個顯示上傳文件的,一個是接收的。

UpFiles視圖:

Post裏面:

 

發佈項目,打開開發工具

 成功了就會顯示media_id.

 

④獲取臨時素材   media_id能夠由上面獲得

 

 

 ⑤新增永久素材

 

 

 

 ⑥上傳永久圖文素材

WxArtcle類:

/// <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; } }
View Code

 

 

 ⑦獲取素材總數

 

 

⑧獲取素材列表     有的類型返回的json格式會不同,具體看官網

 

 

 

 ⑨刪除素材

 

 

總結:只有當咱們須要新加  臨時/永久   素材的時候,咱們才須要運行  改網站進行長傳,其餘的功能能夠寫在別的控制器中作演示。

相關文章
相關標籤/搜索