Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        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));
            }
        }