public bool SendMsg(string toUserName, Image img, ImageFormat format = null, string imageName = null) { if (img == null) { return(false); } string fileName = imageName != null ? imageName : "img_" + upLoadMediaCount; var imgFormat = format != null ? format : ImageFormat.Png; fileName += "." + imgFormat.ToString().ToLower(); MemoryStream ms = new MemoryStream(); img.Save(ms, imgFormat); ms.Seek(0, SeekOrigin.Begin); byte[] data = new byte[ms.Length]; int readCount = ms.Read(data, 0, data.Length); if (readCount != data.Length) { return(false); } string mimetype = "image/" + imgFormat.ToString().ToLower(); var response = mAPIService.Uploadmedia(Self.ID, toUserName, "WU_FILE_" + upLoadMediaCount, mimetype, 2, 4, data, fileName, mPass_ticket, mBaseReq); if (response != null && response.BaseResponse != null && response.BaseResponse.ret == 0) { upLoadMediaCount++; string mediaId = response.MediaId; ImgMsg msg = new ImgMsg(); msg.FromUserName = Self.ID; msg.ToUserName = toUserName; msg.MediaId = mediaId; msg.ClientMsgId = DateTime.Now.Millisecond; msg.LocalID = DateTime.Now.Millisecond; msg.Type = 3; var sendImgRep = mAPIService.SendMsgImg(msg, mPass_ticket, mBaseReq); if (sendImgRep != null && sendImgRep.BaseResponse != null && sendImgRep.BaseResponse.ret == 0) { return(true); } return(false); } else { return(false); } }
public SendMsgImgResponse SendMsgImg(ImgMsg msg, string pass_ticket, BaseRequest baseReq) { string url = this.root_uri + "/cgi-bin/mmwebwx-bin/webwxsendmsgimg?fun=async&f=json&pass_ticket={0}"; url = string.Format(url, pass_ticket); SendMsgImgRequest req = new SendMsgImgRequest(); req.BaseRequest = baseReq; req.Msg = msg; req.Scene = 0; string requestJson = JsonConvert.SerializeObject(req); string repJsonStr = PostString(url, requestJson); if (repJsonStr == null) { return(null); } var rep = JsonConvert.DeserializeObject <SendMsgImgResponse>(repJsonStr); return(rep); }
/// <summary> /// 异步发送图片消息 /// </summary> /// <param name="FromUserName"></param> /// <param name="ToUserName"></param> /// <param name="Content"></param> /// <returns></returns> public async Task <SendMsgImgResponse> SendImgAsync(string ToUserName, string fileName) { string FromUserName = Self.ID; SendMsgImgResponse val = await Task.Run(() => { FileInfo file = new FileInfo(fileName); //上传资源 UploadmediaResponse upload = client.Uploadmedia(FromUserName, ToUserName, "WU_FILE_0", "image/png", 2, 4, file, mPass_ticket, mBaseReq); if (upload != null) { ImgMsg msg = new ImgMsg(); msg.FromUserName = FromUserName; msg.ToUserName = ToUserName; msg.MediaId = upload.MediaId; SendMsgImgResponse rep = client.SendMsgImg(msg, mPass_ticket, mBaseReq); return(rep); } return(null); }); return(val); }
public void ProcessRequest(HttpContext context) { string PUBLICIF = ""; string postData = ""; if (context.Request["PUBLICIF"] != null) { PUBLICIF = context.Request["PUBLICIF"].ToString(); } if (context.Request["postData"] != null) { postData = context.Request["postData"].ToString(); } PUBLICIF = context.Request["PUBLICIF"].ToString(); context.Response.ContentType = "text/plain"; context.Response.ContentType = "text/html; charset=utf-8"; //返回提示 ErrMsg NoteObject = new ErrMsg(); //取出file上传文件 HttpPostedFile file = context.Request.Files[0]; string fileType = context.Request.QueryString["type"]; //取本地路径,先将文件上传到服务器(程序服务器) string mapPath = context.Server.MapPath("~"); string path = mapPath + "\\WeiXin\\"; if (file != null && file.ContentLength > 0) { int imagesKindInx = file.FileName.LastIndexOf("."); string fileNewName = ConvertDateTimeInt(DateTime.Now) + file.FileName.Substring(imagesKindInx, file.FileName.Length - imagesKindInx); string savePath = path + fileNewName; //本地目录不存在创建 if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //本地命名重复存在删除 if (File.Exists(savePath)) { File.Delete(savePath); } //保存文件在本地 file.SaveAs(savePath); //将文件转化为字节 FileStream fs = new FileStream(savePath, System.IO.FileMode.Open, System.IO.FileAccess.Read); byte[] fileBytes = new byte[fs.Length]; fs.Read(fileBytes, 0, fileBytes.Length); fs.Close(); fs.Dispose(); //获取token WX.WX_Token wxproc = new WX.WX_Token(); string token = wxproc.getToken(PUBLICIF); Token1 oToken = new Token1(); oToken = JsonConvert.DeserializeObject <Token1>(token); WebClient wc = new WebClient(); wc.Encoding = ASCIIEncoding.UTF8; var MediaUrl = ""; string tp_media = ""; if (fileType == "newsimg") //图文图片接口 只返回图片地址 { MediaUrl = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token="; byte[] result = wc.UploadFile(new Uri(String.Format(MediaUrl + "{0}", oToken.result)), savePath); tp_media = Encoding.Default.GetString(result); } else //image voice video thumb { MediaUrl = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token="; string newUri = Convert.ToString(new Uri(String.Format(MediaUrl + "{0}&type={1}", oToken.result, fileType))); //设置表单数据格式 HttpRequestClient httpRequestClient = new HttpRequestClient(); if (fileType == "video") //上传视频需要传title、description { VideoInfo ObjVideo = JsonConvert.DeserializeObject <VideoInfo>(postData); httpRequestClient.SetFieldValue("title", ObjVideo.title); //发送数据 httpRequestClient.SetFieldValue("introduction", ObjVideo.introduction); //发送数据 } httpRequestClient.SetFieldValue("media", savePath, "application/octet-stream", fileBytes); //发送文件数据 string responseText = string.Empty; httpRequestClient.Upload(newUri, out responseText); //请求 responseText是返回结果 tp_media = responseText; } WX_Mediaid tp_mediaid = new WX_Mediaid(); tp_mediaid = JsonConvert.DeserializeObject <WX_Mediaid>(tp_media); if (tp_mediaid.errcode != 0) { NoteObject.errCode = 2; NoteObject.errMessage = "上传微信服务器:" + tp_mediaid.errmsg; context.Response.Write(JsonConvert.SerializeObject(NoteObject)); } else { if (fileType == "newsimg") { ImgMsg imgObject = new ImgMsg(); imgObject.error = 0; imgObject.url = tp_mediaid.url; context.Response.Write(JsonConvert.SerializeObject(imgObject)); // NoteObject.result = tp_mediaid.url; //context.Response.Write(NoteObject.result); } else { NoteObject.result = tp_mediaid.media_id; context.Response.Write(JsonConvert.SerializeObject(NoteObject)); } } //context.Response.Write(JsonConvert.SerializeObject(NoteObject)); } }