• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > asp.net微信开发(永久素材管理)

asp.net微信开发(永久素材管理)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了微信开发 asp.net,微信 asp.net,微信支付 asp.net,asp.net,asp net培训等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

除了3天就会失效的临时素材外,开发者有时需要永久保存一些素材,届时就可以通过本接口新增永久素材。

最近更新,永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。

请注意:

  • 1、新增的永久素材也可以在公众平台官网素材管理模块中看到
  • 2、永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,其他类型为1000
  • 3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式,语音大小不超过5M,长度不超过60秒,支持mp3/wma/wav/amr格式
  • 4、调用该接口需https协议

先来看我自己自定义的后台永久素材管理效果图,如下:

再看看微信官网后台上的显示界面,同步的哦!

首先我们来分析一下步骤:
第一步:如果想让图片在自己的页面显示,首先得先建个实体类吧,用来存储素材的信息吧

/// <summary>
 /// 微信永久素材实体类,用于保存永久素材上传至微信服务器后返回的数据
 /// </summary>
 public class WxSuCaiInfo
 {
 public int SuCaiId { get; set; }//自增列序号

 public string SuCaiUrl { get; set; }// 存储文件名

 public string SuCaiType { get; set; }//素材类型,可分为image,voice,video,thumb(缩略图)

 public string SuCaiTitle { get; set; }//图文消息的标题

 public string SuCaiDigest { get; set; }//图文消息的摘要


 public string SuCaiauthor { get; set; }//图文消息的作者
 public string SuCaishow_cover_pic { get; set; }//图文消息是否显示封面.保存0或1

 public string SuCaicontent { get; set; }//图文消息的正文内容
 public string SuCaicontent_source_url { get; set; }//图文消息的原文链接


 public string media_ID { get; set; }//上传至微信服务器后,返回的永久mediaID


 public string Url { get; set; }//上传至微信服务器后,返回的图片URL,仅图片才会返回此属性

 public string uploadDate { get; set; }//上传日期时间


 }
</div>

第二步:上传图片至微信服务器,成功后将返回的media_id和url两个字段数据和其他字段数据一并保存到本地服务器,上传的代码如下:

 /// <summary>
 /// 上传图片至微信服务器,并且本地也保存一份
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void LinBtnUploadImg_Click(object sender, EventArgs e)
 {
  if (this.FileUploadImage.HasFile)
  {
  string fileContentType = FileUploadImage.PostedFile.ContentType;
  if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/png" || fileContentType == "image/x-png" || fileContentType == "image/jpeg"
   || fileContentType == "image/pjpeg")
  {
   int fileSize = this.FileUploadImage.PostedFile.ContentLength;

   if (fileSize <= 2097152)
   {
   string fileName = this.FileUploadImage.PostedFile.FileName;
   // 客户端文件路径
   string filepath = FileUploadImage.PostedFile.FileName; //得到的是文件的完整路径,包括文件名,如:C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg 
   //string filepath = FileUpload1.FileName;  //得到上传的文件名20022775_m.jpg 
   string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);//20022775_m.jpg 
   string serverpath = Server.MapPath("~/WeiXinImg/") + filename;//取得文件在服务器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg

   //把图片上传至本地服务器
   this.FileUploadImage.PostedFile.SaveAs(serverpath);//将上传的文件另存为


   //上传图片素材至微信服务器,永久保存

   WeiXinServer wxs = new WeiXinServer();

   ///从缓存读取accesstoken
   string Access_token = Cache["Access_token"] as string;

   if (Access_token == null)
   {
    //如果为空,重新获取
    Access_token = wxs.GetAccessToken();

    //设置缓存的数据7000秒后过期
    Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
   }

   string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


   string url = string.Format("http://api.weixin.qq.com/cgi-bin/material/add_material?access_token={0}&type={1}", Access_tokento,"image");

   try
   {

    string res = HttpUploadFile(url, serverpath);
    //判断res结果集里面是否包含media_id
    if (res.Contains("media_id"))
    {
    //如果能进行到这里,那说明图片已经上传至微信服务器,是永久素材哦,
    //开始解析json串,使用前需要引用Newtonsoft.json.dll文件
    JObject jsonObj = JObject.Parse(res);

    

    //图片上传成功后,返回的是两个字段,media_id和url


    //将两个字段开始存入数据库,保存数据,方便获取列表的时候直接从本地服务器读取
    WxSuCaiInfo wsc = new WxSuCaiInfo();

    wsc.SuCaiUrl = filename;//注意,这里保存的图片名称

    wsc.SuCaiType = "image";//文件类型

    wsc.media_ID = jsonObj["media_id"].ToString();//这个属性保存的是微信返回的media_id

    wsc.Url = jsonObj["url"].ToString();//这个属性保存的才是微信返回的url

    wsc.uploadDate = System.DateTime.Now.ToString();//记录当前文件上传日期时间

    //存入数据库
    WxSuCaiService wscs = new WxSuCaiService();


    int num = wscs.AddWxSuCaiInfo(wsc);

    if (num > 0)
    {
     Response.Write("<script>alert('上传图片素材成功!');location='WxSuCaiMannageImageList.aspx';</script>");
    }
    else
    {
     Response.Write("<script>alert('上传图片素材失败!');location='WxSuCaiMannageImageList.aspx';</script>");
    }
    }
   }
   catch(Exception ex)
   {
    Response.Write(ex.Message.ToString());
   }
   }
   else
   {
   Response.Write("<script>alert('上传文件不能大于2M!')</script>");
   }

  }
  else
  {
   Response.Write("<script>alert('只支持BMP,GIF,PNG,JPG,JPEG格式的图片!')</script>");
  }
  }
  else
  {
  Response.Write("<script>alert('请选择图片!')</script>");
  }
 }

</div>

走到这其实效果已经出来了,接下来看最后一步就是删除选中的素材,删除微信远程服务器的数据--再删除本地服务器的数据,有人问难道这个还有顺序?
其实你可以想象,如果微信服务器的图片没有删除成功,你先把本地服务器的图片删除了,那就和官网同步不了了。
第三步:删除素材

 /// <summary>
 /// 全选全不选
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void CheckAll_CheckedChanged(object sender, EventArgs e)
 {
  foreach (DataListItem item in this.DLSuCaiImageList.Items)
  {
  CheckBox checkIn = item.FindControl("CheckIn") as CheckBox;
  checkIn.Checked = CheckAll.Checked;
  }
 }
 /// <summary>
 /// 删除选中项
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void LinkBtnDeleteSelected_Click(object sender, EventArgs e)
 {
  Boolean ischeck = false;

  foreach (DataListItem item in this.DLSuCaiImageList.Items)
  {
  CheckBox checkIn = item.FindControl("CheckIn") as CheckBox;
  if (checkIn.Checked)
  {
   ischeck = true;
   Label lbSuCaiId = item.FindControl("lbSuCaiId") as Label;
   Label lbSuCaiUrl = item.FindControl("lbSuCaiUrl") as Label;
   Label lbmedia_ID = item.FindControl("lbmedia_ID") as Label;
   
   //删除微信服务器上的图片
   WeiXinServer wxs = new WeiXinServer();
   string res =



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET微信公众号查看粉丝信息接口
  • ASP.NET微信公众号添加菜单
  • ASP.NET微信公众号之用户分组管理web页面
  • 最详细的ASP.NET微信JS-SDK支付代码
  • ASP.NET微信公众号客服接口
  • 微信开发(一) asp.net接入
  • asp.net实现微信公众账号接口开发教程
  • ASP.NET微信开发(接口指南)
  • asp.net微信开发(永久素材管理)
  • asp.net微信开发(高级群发图文)

相关文章

  • 2017-05-11ASP.NET Gridview 中使用checkbox删除的2种方法实例分享
  • 2018-08-20浅谈ASP.NET Core 2.0 带初始参数的中间件(译)
  • 2017-05-11SQL Server 2005 RTM 安装错误 :The SQL Server System Configuration Checker cannot be executed due to
  • 2017-05-11递归输出ASP.NET页面所有控件的类型和ID的代码
  • 2017-05-11asp.net简单生成验证码的方法
  • 2017-05-11Asp.net简单代码设置GridView自适应列宽不变形实现思路与代码
  • 2017-05-11asp.net下String.prototype.split()的兼容问题
  • 2017-05-11Asp.net调试的一些问题小结
  • 2017-05-11Visual Studio 2015全英界面切换成中文界面
  • 2017-05-11ASP.NET MVC3关于生成纯静态后如何不再走路由直接访问静态页面

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C# SetCursorPos简介及使用说明
    • ASP.NET中的参数与特殊类型和特性
    • ASP.NET表单验证方法详解第1/2页
    • 深入理解__doPostBack 客户端调用服务端事件
    • 蛇年多屏图片切换(可添加图片链接以及编辑标题)
    • 小心!ASP.NET网站发布时的那些坑
    • asp.net+ajax+sqlserver自动补全功能实现解析
    • Gridview用法大总结(全程图解珍藏版)
    • asp.net自定义控件中注册Javascript问题解决方案
    • asp.net跳转页面的三种方法比较

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有