asp.net如何在微信开发中应用(asp.net,开发技术)

时间:2024-05-06 12:46:34 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

ASP.NET 是什么

ASP.NET 是开源,跨平台,高性能,轻量级的 Web 应用构建框架,常用于通过 HTML、CSS、JavaScript 以及服务器脚本来构建网页和网站。

  • 1、新增的永久素材也可以在公众平台官网素材管理模块中看到

  • 2、永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,其他类型为1000

  • 3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式,语音大小不超过5M,长度不超过60秒,支持mp3/wma/wav/amr格式

  • 4、调用该接口需https协议

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

asp.net如何在微信开发中应用

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

asp.net如何在微信开发中应用

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

///<summary>///微信永久素材实体类,用于保存永久素材上传至微信服务器后返回的数据///</summary>publicclassWxSuCaiInfo{publicintSuCaiId{get;set;}//自增列序号publicstringSuCaiUrl{get;set;}//存储文件名publicstringSuCaiType{get;set;}//素材类型,可分为image,voice,video,thumb(缩略图)publicstringSuCaiTitle{get;set;}//图文消息的标题publicstringSuCaiDigest{get;set;}//图文消息的摘要publicstringSuCaiauthor{get;set;}//图文消息的作者publicstringSuCaishow_cover_pic{get;set;}//图文消息是否显示封面.保存0或1publicstringSuCaicontent{get;set;}//图文消息的正文内容publicstringSuCaicontent_source_url{get;set;}//图文消息的原文链接publicstringmedia_ID{get;set;}//上传至微信服务器后,返回的永久mediaIDpublicstringUrl{get;set;}//上传至微信服务器后,返回的图片URL,仅图片才会返回此属性publicstringuploadDate{get;set;}//上传日期时间}

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

///<summary>///上传图片至微信服务器,并且本地也保存一份///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidLinBtnUploadImg_Click(objectsender,EventArgse){if(this.FileUploadImage.HasFile){stringfileContentType=FileUploadImage.PostedFile.ContentType;if(fileContentType=="image/bmp"||fileContentType=="image/gif"||fileContentType=="image/png"||fileContentType=="image/x-png"||fileContentType=="image/jpeg"||fileContentType=="image/pjpeg"){intfileSize=this.FileUploadImage.PostedFile.ContentLength;if(fileSize<=2097152){stringfileName=this.FileUploadImage.PostedFile.FileName;//客户端文件路径stringfilepath=FileUploadImage.PostedFile.FileName;//得到的是文件的完整路径,包括文件名,如:C:\DocumentsandSettings\Administrator\MyDocuments\MyPictures\20022775_m.jpg//stringfilepath=FileUpload1.FileName;//得到上传的文件名20022775_m.jpgstringfilename=filepath.Substring(filepath.LastIndexOf("\\")+1);//20022775_m.jpgstringserverpath=Server.MapPath("~/WeiXinImg/")+filename;//取得文件在服务器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg//把图片上传至本地服务器this.FileUploadImage.PostedFile.SaveAs(serverpath);//将上传的文件另存为//上传图片素材至微信服务器,永久保存WeiXinServerwxs=newWeiXinServer();///从缓存读取accesstokenstringAccess_token=Cache["Access_token"]asstring;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);}stringAccess_tokento=Access_token.Substring(17,Access_token.Length-37);stringurl=string.Format("http://api.weixin.qq.com/cgi-bin/material/add_material?access_token={0}&type={1}",Access_tokento,"image");try{stringres=HttpUploadFile(url,serverpath);//判断res结果集里面是否包含media_idif(res.Contains("media_id")){//如果能进行到这里,那说明图片已经上传至微信服务器,是永久素材哦,//开始解析json串,使用前需要引用Newtonsoft.json.dll文件JObjectjsonObj=JObject.Parse(res);//图片上传成功后,返回的是两个字段,media_id和url//将两个字段开始存入数据库,保存数据,方便获取列表的时候直接从本地服务器读取WxSuCaiInfowsc=newWxSuCaiInfo();wsc.SuCaiUrl=filename;//注意,这里保存的图片名称wsc.SuCaiType="image";//文件类型wsc.media_ID=jsonObj["media_id"].ToString();//这个属性保存的是微信返回的media_idwsc.Url=jsonObj["url"].ToString();//这个属性保存的才是微信返回的urlwsc.uploadDate=System.DateTime.Now.ToString();//记录当前文件上传日期时间//存入数据库WxSuCaiServicewscs=newWxSuCaiService();intnum=wscs.AddWxSuCaiInfo(wsc);if(num>0){Response.Write("<script>alert('上传图片素材成功!');location='WxSuCaiMannageImageList.aspx';</script>");}else{Response.Write("<script>alert('上传图片素材失败!');location='WxSuCaiMannageImageList.aspx';</script>");}}}catch(Exceptionex){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>");}}

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

///<summary>///全选全不选///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidCheckAll_CheckedChanged(objectsender,EventArgse){foreach(DataListItemiteminthis.DLSuCaiImageList.Items){CheckBoxcheckIn=item.FindControl("CheckIn")asCheckBox;checkIn.Checked=CheckAll.Checked;}}///<summary>///删除选中项///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidLinkBtnDeleteSelected_Click(objectsender,EventArgse){Booleanischeck=false;foreach(DataListItemiteminthis.DLSuCaiImageList.Items){CheckBoxcheckIn=item.FindControl("CheckIn")asCheckBox;if(checkIn.Checked){ischeck=true;LabellbSuCaiId=item.FindControl("lbSuCaiId")asLabel;LabellbSuCaiUrl=item.FindControl("lbSuCaiUrl")asLabel;Labellbmedia_ID=item.FindControl("lbmedia_ID")asLabel;//删除微信服务器上的图片WeiXinServerwxs=newWeiXinServer();stringres="";///从缓存读取accesstokenstringAccess_token=Cache["Access_token"]asstring;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);}stringAccess_tokento=Access_token.Substring(17,Access_token.Length-37);stringposturl="https://api.weixin.qq.com/cgi-bin/material/del_material?access_token="+Access_tokento;//POST数据例子:POST数据例子:{"media_id":MEDIA_ID}stringmedia_id=lbmedia_ID.Text.ToString();stringpostData="{\"media_id\":\""+media_id+"\"}";res=wxs.GetPage(posturl,postData);if(res.Contains("errcode")){//开始解析json串,使用前需要引用Newtonsoft.json.dll文件JObjectjsonObj=JObject.Parse(res);if(jsonObj["errcode"].ToString().Equals("0")){///获取本地服务器的路径stringserverPathss=Server.MapPath("~/WeiXinImg/")+lbSuCaiUrl.Text.ToString();//验证本地服务的路径是否存在该图片if(File.Exists(serverPathss)){//如果存在就删除File.Delete(serverPathss);}WxSuCaiServicewscs=newWxSuCaiService();//通过media_id删除本地服务器数据库记录intnum=wscs.DeleteWxSuCaiInfo(lbmedia_ID.Text.ToString());if(num>0){Response.Write("<script>alert('图片素材删除成功!');location='WxSuCaiMannageImageList.aspx';</script>");}else{Response.Write("<script>alert('微信服务器图片删除成功!本地服务器图片素材删除失败!');location='WxSuCaiMannageImageList.aspx';</script>");}}}}}if(!ischeck){ScriptManager.RegisterClientScriptBlock(this.Page,this.GetType(),"","alert('请先选中删除项!!!')",true);return;}}

最后是页面的代码一并奉上,大家仔细研究。

<!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title></title><linkhref="css/style.css"rel="Stylesheet"type="text/css"/><styletype="text/css">.meun{width:1100px;height:40px;margin-left:20px;line-height:40px;margin-top:10px;border-bottom:1pxsolid#d6d6d6;}.meunul{padding:0px;margin:0px;}.meunulli{float:left;width:100px;text-align:center;list-style:none;}.meunulli:hover{border-bottom:3pxsolid#ecd9df;cursor:pointer;}a:hover{color:#000;}.checkedstyle{border-bottom:3pxsolid#208008;}.meun_imglist{width:1050px;min-height:300px;border:1pxsolid#d6d6d6;margin-top:20px;margin-left:35px;margin-bottom:30px;}.uploadstyle{width:300px;background-image:url('images/inputbg.gif');background-repeat:repeat-x;height:35px;border:1pxsolid#d6d6d6;float:left;margin-bottom:10px;line-height:35px;}.CheckAll{float:left;padding:5px;}.CheckIn{float:left;padding:2px;}.DLSuCaiImageList{margin-top:10px;margin-left:10px;}</style></head><body><formid="form1"runat="server"><divclass="place"><span>位置:</span><ulclass="placeul"><li><ahref="WelCome.aspx"target="rightFrame">首页</a></li><li>微信管理</li><li>德桥员工服务中心--素材管理</li></ul></div><div><span>素材管理</span><span>永久素材和微信官网同步,您在这里所操作的任何一项,将影响到官网后台素材管理,谨慎操作!</span></div><divclass="meun"><ul><li><ahref="WxSuCaiManageList.aspx">图文消息</a></li><liclass="checkedstyle"><ahref="WxSuCaiMannageImageList.aspx">图片库</a></li><li><ahref="#">语音</a></li><li><ahref="#">视频</a></li></ul></div><divclass="meun_imglist"><div><asp:FileUploadID="FileUploadImage"CssClass="uploadstyle"runat="server"/><asp:LinkButtonID="LinBtnUploadImg"runat="server"OnClick="LinBtnUploadImg_Click"><span>上传</span></asp:LinkButton><span>&nbsp;&nbsp;支持jpg,gif,png,bmp格式图片,大小2M内,如上传成功后,图片未能显示,请将图片重新命名后再尝试上传.</span></div><div><asp:CheckBoxID="CheckAll"CssClass="CheckAll"AutoPostBack="true"runat="server"OnCheckedChanged="CheckAll_CheckedChanged"/>&nbsp;&nbsp;<span>全选</span><asp:LinkButtonID="LinkBtnDeleteSelected"runat="server"OnClick="LinkBtnDeleteSelected_Click"><span>删除选中</span></asp:LinkButton></div><asp:DataListID="DLSuCaiImageList"CssClass="DLSuCaiImageList"runat="server"RepeatColumns="6"><ItemTemplate><div><imgsrc='../WeiXinImg/<%#Eval("SuCaiUrl")%>'/><div><asp:CheckBoxID="CheckIn"CssClass="CheckIn"runat="server"/><asp:LabelID="lbSuCaiUrl"ToolTip='<%#Eval("SuCaiUrl")%>'runat="server"Text='<%#Eval("SuCaiUrl").ToString().Length>8?Eval("SuCaiUrl").ToString().Substring(0,8)+"...":Eval("SuCaiUrl").ToString()%>'></asp:Label></div><div><%#Eval("uploadDate").ToString().Length>20?Eval("uploadDate").ToString().Substring(0,20)+"...":Eval("uploadDate").ToString()%><asp:LabelID="lbSuCaiId"runat="server"Visible="false"Text='<%#Eval("SuCaiId")%>'></asp:Label><asp:LabelID="lbmedia_ID"runat="server"Visible="false"Text='<%#Eval("media_ID")%>'></asp:Label></div></div></ItemTemplate></asp:DataList></div></form></body></html>

其他素材上传都类似,就不一一介绍了。
新建图文素材界面如下:

asp.net如何在微信开发中应用

从图片库选择图片素材如下:

asp.net如何在微信开发中应用

这是就是从已上传过的图片库中选择的,和图片素材管理界面的功能基本相似,只不过多了一个确认选择的按钮,因为确认选择了之后,要关闭本页,回到新建图文页面,主要代码:

///<summary>///确认选择,选中之后,跳转至新建图文页面///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidLinkBtnSubMitSelected_Click(objectsender,EventArgse){Booleanbools=false;intnum=0;foreach(DataListItemiteminthis.DLSuCaiImageList.Items){CheckBoxcheckIn=item.FindControl("CheckIn")asCheckBox;if(checkIn.Checked){num+=1;bools=true;}}if(!bools){ScriptManager.RegisterClientScriptBlock(this.Page,this.GetType(),"","alert('请选择一个图片素材!!!')",true);return;}if(num>=2){ScriptManager.RegisterClientScriptBlock(this.Page,this.GetType(),"","alert('您只能选择一个图片素材!');",true);return;}else{foreach(DataListItemiteminthis.DLSuCaiImageList.Items){CheckBoxcheckIn=item.FindControl("CheckIn")asCheckBox;if(checkIn.Checked){///获取选中图片media_idLabellbmedia_ID=item.FindControl("lbmedia_ID")asLabel;Session["imgmedia_id"]=lbmedia_ID.Text.ToString();Response.Write("<script>alert('已选择!');window.opener.location.reload();window.close();</script>");}}}}

新建图文的页面在接收的时候可以这样:

if(Session["imgmedia_id"]!=null){WxSuCaiServicewscs=newWxSuCaiService();WxSuCaiInfowscinfo=wscs.GetWxSuCaiInfo(Session["imgmedia_id"].ToString());if(wscinfo!=null){this.ImgTuWen.ImageUrl="~/WeiXinImg/"+wscinfo.SuCaiUrl.ToString();this.ImgTuWen2.ImageUrl="~/WeiXinImg/"+wscinfo.SuCaiUrl.ToString();this.ImgTuWen2.Visible=true;Session["imgmedia_id"]=wscinfo.media_ID.ToString();//图片的media_idSession["fileNameimg"]=wscinfo.SuCaiUrl.ToString();//图片的文件名称}}

最后新建图文信息的效果图如下:

asp.net如何在微信开发中应用

官方后台如下:

asp.net如何在微信开发中应用

关于编辑图文信息的关键代码如下:

///<summary>///绑定事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidDLMpNewsList_ItemDataBound(objectsender,DataListItemEventArgse){if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){LinkButtonLinkBtnDeleteSucai=e.Item.FindControl("LinkBtnDeleteSucai")asLinkButton;LinkBtnDeleteSucai.Attributes.Add("OnClick","returnconfirm('您确定删除该图文素材???删除后将和微信官网同步删除!!')");HyperLinkHyperLinkEdit=e.Item.FindControl("HyperLinkEdit")asHyperLink;HyperLinkEdit.Attributes.Add("OnClick","returnconfirm('即将进入编辑模式!!是否执行下一步操作??')");Labellbmedia_ID=e.Item.FindControl("lbmedia_ID")asLabel;HyperLinkEdit.NavigateUrl="WxNewTuWen.aspx?media_id="+lbmedia_ID.Text.ToString();//把图文消息的media_id传参到新建图文界面}}

asp.net如何在微信开发中应用

新建图文页面关键代码如下:

if(!Page.IsPostBack){///编辑模式if(Request.QueryString["media_id"]!=null){stringmedia_id=Request.QueryString["media_id"].ToString();Session["sucaimedia_id"]=media_id;WxSuCaiServicewscs=newWxSuCaiService();WxSuCaiInfowscinfo=wscs.GetWxSuCaiInfo(media_id);if(wscinfo!=null){this.txttuwen_title.Value=wscinfo.SuCaiTitle.ToString();if(wscinfo.SuCaiTitle.ToString().Length>15){this.biaoti_yulan.InnerText=wscinfo.SuCaiTitle.ToString().Substring(0,15)+"...";}else{this.biaoti_yulan.InnerText=wscinfo.SuCaiTitle.ToString();}this.txttuwen_author.Value=wscinfo.SuCaiauthor.ToString();this.txtzhaiyao.InnerText=wscinfo.SuCaiDigest.ToString();this.ImgTuWen.ImageUrl="~/WeiXinImg/"+wscinfo.SuCaiUrl.ToString();this.ImgTuWen2.ImageUrl="~/WeiXinImg/"+wscinfo.SuCaiUrl.ToString();this.ImgTuWen2.Visible=true;Session["imgmedia_id"]=wscinfo.SuCaithumb_media_id.ToString();this.LinkBtnDeleteImg.Visible=true;if(!String.IsNullOrWhiteSpace(wscinfo.SuCaicontent_source_url.ToString())){this.txtYuanWenUrl.Text=wscinfo.SuCaicontent_source_url.ToString();this.txtYuanWenUrl.Visible=true;this.CheckYuanWen.Checked=true;}this.txtYuanWenUrl.Text=wscinfo.SuCaicontent_source_url.ToString();this.tbContent.InnerText=wscinfo.SuCaicontent.ToString();if(wscinfo.SuCaishow_cover_pic.ToString().Equals("1")){this.CheckFengMianShow.Checked=true;}else{this.CheckFengMianShow.Checked=false;}}}}

asp.net如何在微信开发中应用

编辑提交关键代码如下:

///<summary>///保存图文素材和修改按钮公用///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidLinkBtnSaveYongjiu_Click(objectsender,EventArgse){//非空验证if(String.IsNullOrWhiteSpace(this.txttuwen_title.Value.ToString())){ScriptManager.RegisterClientScriptBlock(this.Page,this.GetType(),"","alert('请输入图文标题!');",true);return;}if(this.ImgTuWen2.ImageUrl.ToString().Equals("")){ScriptManager.RegisterClientScriptBlock(this.Page,this.GetType(),"","alert('必须上传一张图片!');",true);return;}if(String.IsNullOrWhiteSpace(this.tbContent.InnerText.ToString())){ScriptManager.RegisterClientScriptBlock(this.Page,this.GetType(),"","alert('请输入正文内容!');",true);return;}//对各项进行赋值WeiXinServerwxs=newWeiXinServer();///从缓存读取accesstokenstringAccess_token=Cache["Access_token"]asstring;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);}stringAccess_tokento=Access_token.Substring(17,Access_token.Length-37);//根据session判断media_id是否为空,也可根据request.queryString["media_id"]进行判断是否为空if(Session["sucaimedia_id"]!=null){//执行更新操作//{//"media_id":MEDIA_ID,//"index":INDEX,//"articles":{//"title":TITLE,//"thumb_media_id":THUMB_MEDIA_ID,//"author":AUTHOR,//"digest":DIGEST,//"show_cover_pic":SHOW_COVER_PIC(0/1),//"content":CONTENT,//"content_source_url":CONTENT_SOURCE_URL//}//}stringisshow_cover_pic="";if(this.CheckFengMianShow.Checked){isshow_cover_pic="1";}else{isshow_cover_pic="0";}stringdescription=NoHTML(this.tbContent.InnerText.ToString());stringpostData="{\"media_id\":\""+Session["sucaimedia_id"].ToString()+"\",\"index\":\"0\",\"articles\":{\"title\":\""+this.txttuwen_title.Value.ToString()+"\",\"thumb_media_id\":\""+Session["imgmedia_id"].ToString()+"\",\"author\":\""+this.txttuwen_author.Value.ToString()+"\",\"digest\":\""+this.txtzhaiyao.InnerText.ToString()+"\",\"show_cover_pic\":\""+isshow_cover_pic+"\",\"content\":\""+description+"\",\"content_source_url\":\""+this.txtYuanWenUrl.Text.ToString()+"\"}}";///修改永久图文素材stringurl=string.Format("https://api.weixin.qq.com/cgi-bin/material/update_news?access_token={0}",Access_tokento);stringjsonres=PostUrl(url,postData);if(jsonres.Contains("errcode")){//使用前需要引用Newtonsoft.json.dll文件JObjectjsonObj=JObject.Parse(jsonres);if(jsonObj["errcode"].ToString().Equals("0")){//修改本地数据//保存数据,方便获取列表的时候直接从本地服务器读取WxSuCaiInfowsc=newWxSuCaiInfo();wsc.SuCaiUrl=Session["fileNameimg"].ToString();//注意,这里保存的图片名称wsc.SuCaiTitle=this.txttuwen_title.Value.ToString();//图文消息的标题wsc.SuCaiDigest=this.txtzhaiyao.InnerText.ToString();//图文消息的摘要wsc.SuCaithumb_media_id=Session["imgmedia_id"].ToString();//图文的消息封面media_idwsc.SuCaiauthor=this.txttuwen_author.Value.ToString();wsc.SuCaishow_cover_pic=isshow_cover_pic;wsc.SuCaicontent=description;wsc.SuCaicontent_source_url=this.txtYuanWenUrl.Text.ToString();wsc.uploadDate=System.DateTime.Now.ToString();//记录当前文件保存图文素材日期时间//修改数据库信息WxSuCaiServicewscs=newWxSuCaiService();intnum=wscs.UpdateWxSuCaiInfo(Session["sucaimedia_id"].ToString(),wsc);if(num>0){Session["sucaimedia_id"]=null;Response.Write("<script>alert('图文素材修改成功!');location='WxSuCaiManageList.aspx';</script>");}else{Response.Write("<script>alert('图文素材修改失败!');</script>");}}}}else{//新增图文素材}}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:asp.net如何在微信开发中应用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:asp.net中怎么实现页面换肤功能下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18