• 微信开发 ---- 素材管理


    2018.03.15GitHub下载代码 

    官网:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738726      仔细阅读完我们的文档

     做测试的时候经常报错。 有几个需要注意的:

    ①但凡涉及到Post传值的时候,请拼接好你的字符串

    ②Post传值的数据一定要是josn格式

    步骤:

    ①创建我们的 API

    ②新增临时素材     需要表单提交文件来进行新增        

    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 = "
    --" + boundary + "
    Content-Disposition: form-data; name="{0}"; filename="{1}"
    Content-Type: application/octet-stream
    
    ";
                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("
    --" + boundary + "--
    ");
                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格式会不一样,具体看官网

     

     

     ⑨删除素材

    总结:只有当我们需要新加  临时/永久   素材的时候,我们才需要运行  改网站进行长传,其他的功能可以写在别的控制器中做演示。

  • 相关阅读:
    java poi 操作
    java map 根据 map的value值进行排序
    Windows navcat 连接虚拟机mysql
    如何阻止Windows广告窗口弹出
    python gitlab 学习笔记
    Java的家庭记账本程序(D)
    《程序员修炼之道:从小工到专家》的阅读笔记(二)
    Java的家庭记账本程序(C)
    Java的家庭记账本程序(B)
    Java的家庭记账本程序(A)
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/8559462.html
Copyright © 2020-2023  润新知