示例#1
0
        /// <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);
        }