/// <summary> /// 处理接收图片文件 /// </summary> /// <param name="msg"></param> private void onTCPImageFile(ImageFileMsg msg) { exUser user = findUser(msg.from); if (user == null) return; if (user.UserID == MyAuth.UserID) return;//如果是自己发送给自己的消息,则不处理 System.IO.DirectoryInfo dInfo = new System.IO.DirectoryInfo(MyAuth.UserID + "\\ArrivalImage"); if (!dInfo.Exists) dInfo.Create(); string fileName = MyAuth.UserID + "\\ArrivalImage\\" + msg.MD5 + msg.Extension; if (System.IO.File.Exists(fileName)) return;//如果本地已经有此文件已经存在,则退出(不接收文件) TFileInfo fileinfo = new TFileInfo(); fileinfo.MD5 = msg.MD5; fileinfo.Length = msg.Length; fileinfo.Extension = msg.Extension; fileinfo.fullName = fileName; if (msg.MessageType == IMLibrary3.Enmu.MessageType.User)//如果图片发送给用户 { ImageFileClient tcpfile = new ImageFileClient(Global.ImageServerEP, fileinfo); tcpfile.fileTransmitted += delegate(object sender, fileTransmitEvnetArgs e) { FormTalkUser fs = user.Tag as FormTalkUser; if (fs != null) { List<MyPicture> needRecPics = fs.GetNeedRecPicture(); foreach (MyPicture pic in needRecPics) if (pic.MD5 == e.fileInfo.MD5) { needRecPics.Remove(pic); pic.Image = System.Drawing.Image.FromFile(e.fileInfo.fullName); fs.Invalidate(); } } (sender as ImageFileClient).Dispose(); sender = null; }; } else if (msg.MessageType == IMLibrary3.Enmu.MessageType.Group)//如果图片发送给群 { exRoom room = findRoom(msg.to);//获得消息接收群 if (room == null) return; FormTalkRoom fs = room.Tag as FormTalkRoom; ImageFileClient tcpfile = new ImageFileClient(Global.ImageServerEP, fileinfo); tcpfile.fileTransmitted += delegate(object sender, fileTransmitEvnetArgs e) { if (fs != null) { List<MyPicture> needRecPics = fs.GetNeedRecPicture(); foreach (MyPicture pic in needRecPics) if (pic.MD5 == e.fileInfo.MD5) { needRecPics.Remove(pic); pic.Image = System.Drawing.Image.FromFile(e.fileInfo.fullName); fs.Invalidate(); } } (sender as ImageFileClient).Dispose(); sender = null; }; } }
private void MessagePanel1_CreateMsgAfter(object sender, IMLibrary3.Protocol.Message Message) { Message.MessageType = IMLibrary3.Enmu.MessageType.Group;//消息类型为组对话 Message.from = myUserID; Message.to = Room.RoomID;//将群组编号存入Tag if (SendMsgToGroup != null) SendMsgToGroup(Message, Room); this.MsgToRichTextBox(Message, true); #region 发送截图 List<IMLibrary3.MyPicture> pictures = MessagePanel1.GetSendPicture(); if (pictures != null)//如果文件是截图 foreach (IMLibrary3.MyPicture pic in pictures) if (pic.MD5.Length == 32) { string fileName =myUserID + "\\sendImage\\" + pic.MD5 + ".gif"; ImageFileClient tcpFile = new ImageFileClient(Global.ImageServerEP, fileName);//发送图片文件到服务器 tcpFile.fileTransmitted += delegate(object sender1, fileTransmitEvnetArgs e) { if (SendMsgToGroup != null) { IMLibrary3.Protocol.ImageFileMsg fileMsg = new IMLibrary3.Protocol.ImageFileMsg(); fileMsg.from = myUserID; fileMsg.to = Room.RoomID; fileMsg.MessageType = IMLibrary3.Enmu.MessageType.Group; fileMsg.Name = ""; fileMsg.MD5 = e.fileInfo.MD5; fileMsg.Extension = e.fileInfo.Extension; fileMsg.Length = e.fileInfo.Length; SendMsgToGroup(fileMsg, Room); } (sender1 as ImageFileClient).Dispose(); sender1 = null; }; } #endregion this.MessagePanel1.ClearMsgTextBox(); }
private void MessagePanel1_CreateMsgAfter(object sender, IMLibrary3.Protocol.Message msg) { if (User.UserID == myUserID) { IMLibrary3.Global.MsgShow("不能给自己发送消息"); return; } msg.MessageType = IMLibrary3.Enmu.MessageType.User; if (SendMsgToUser != null) SendMsgToUser(msg, User); this.MsgToRichTextBox(msg, true); #region 发送截图 List<IMLibrary3.MyPicture> pictures = MessagePanel1.GetSendPicture(); if (pictures != null )//如果文件是截图 foreach (IMLibrary3.MyPicture pic in pictures) if (pic.MD5.Length == 32) { string fileName = myUserID + "\\sendImage\\" + pic.MD5 + ".gif"; ImageFileClient tcpFile = new ImageFileClient(Global.ImageServerEP, fileName);//发送图片文件到服务器 tcpFile.fileTransmitted += delegate(object sender1, fileTransmitEvnetArgs e) { if (SendMsgToUser != null) { IMLibrary3.Protocol.ImageFileMsg fileMsg = new IMLibrary3.Protocol.ImageFileMsg(); fileMsg.MessageType = IMLibrary3.Enmu.MessageType.User; fileMsg.Name = ""; fileMsg.MD5 = e.fileInfo.MD5; fileMsg.Extension = e.fileInfo.Extension; fileMsg.Length = e.fileInfo.Length; SendMsgToUser(fileMsg, User); } (sender1 as ImageFileClient).Dispose(); sender1 = null; }; } #endregion this.MessagePanel1.ClearMsgTextBox(); }