/// <summary> /// 发送文件类信息 /// </summary> /// <param name="localpath">本地文件路径(包括文件名)</param> private void UpdateFile(string localpath) { #region 封装roomShare if (room == null) { return; } var roomShare = new RoomShare() { roomId = room.id, type = GetFileType(localpath), size = Convert.ToInt32(new FileInfo(localpath).Length),//文件大小 userId = Applicate.MyAccount.userId, name = Path.GetFileName(localpath), }; #endregion //上传文件 //byte[] bytes = FileUtil.HttpUpLoad(localpath, Applicate.Access_Token);//上传文件 var clientAsync = new HttpClient(); var uri = new Uri(Applicate.URLDATA.data.uploadUrl + "upload/UploadServlet"); clientAsync.UploadFileCompleted += (sen, res) => { if (res.Error != null) { if (res.Error.Message.Contains("413"))//以后再改 { roomShare.progress = "文件过大,上传失败"; } else { roomShare.progress = "上传失败"; } return; } uploadList.Remove(roomShare); var ss = Encoding.UTF8.GetString(res.Result); var rtnInfo = JsonConvert.DeserializeObject <JsonFileinfo>(Encoding.UTF8.GetString(res.Result));//获取返回值 if (rtnInfo.data.images.Count > 0) { roomShare.url = rtnInfo.data.images[0].oUrl;//消息内容为返回的图片原始Url } else if (rtnInfo.data.videos.Count > 0) { roomShare.url = rtnInfo.data.videos[0].oUrl; } else if (rtnInfo.data.audios.Count > 0) { roomShare.url = rtnInfo.data.audios[0].oUrl; } else if (rtnInfo.data.others.Count > 0) { roomShare.url = rtnInfo.data.others[0].oUrl;//消息内容为返回的文件原始Url } var client = APIHelper.AddRoomSharesAsync(roomShare); client.UploadDataCompleted += (s, o) => { //var shareObj = JsonConvert.DeserializeObject<RoomShare>(Encoding.UTF8.GetString(o.Result), typeof(RoomShare)); //shareObj.filePath = localpath; //shareObj.Insert(); GetRoomShare(); }; }; clientAsync.UploadProgressChanged += (s, o) => { roomShare.progress = (o.ProgressPercentage * 2).ToString() + "%";//50%表示上传成功 }; uploadList.Add(roomShare); clientAsync.UploadFileAsync(uri, localpath); }