private void btnBrowse_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            var            res            = openFileDialog.ShowDialog();

            if ((bool)res)
            {
                textBox.Text = openFileDialog.FileName;
                SocketFileInfo socketFileInfo = new SocketFileInfo()
                {
                    TaskSts   = TaskStatus.NONE,
                    FilePath  = openFileDialog.FileName,
                    TimeStamp = DateTime.Now.ToString(),
                    FileSize  = (int)new FileInfo(openFileDialog.FileName).Length
                };
                sendFiles.Add(socketFileInfo);
            }
        }
        private void SendFileToDevice1(SocketFileInfo item)
        {
            try
            {
                WebClient webclient = new WebClient();
                webclient.Encoding = Encoding.UTF8;
                var url        = httpUrl + "upload";
                var memStream  = new MemoryStream();
                var fileStream = new FileStream(item.FilePath, FileMode.Open, FileAccess.Read);

                var boundary      = "---------------" + DateTime.Now.Ticks.ToString("x");
                var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
                var endBoundary   = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n");

                webclient.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary);
                //webclient.UploadFile(url, item.FilePath);
                string filename       = item.FilePath.Substring(item.FilePath.LastIndexOf("/") + 1);
                string filePartHeader = "Content-Disposition:form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type:application/octet-stream\r\n\r\n";
                var    header         = string.Format(filePartHeader, "file", filename);
                var    headerbytes    = Encoding.ASCII.GetBytes(header);
                memStream.Write(beginBoundary, 0, beginBoundary.Length);
                memStream.Write(headerbytes, 0, headerbytes.Length);
                var base64string = System.Convert.ToBase64String(System.IO.File.ReadAllBytes(item.FilePath));
                var readText     = Encoding.ASCII.GetBytes(base64string);
                memStream.Write(readText, 0, readText.Length);
                // 写入最后的结束边界符------------ 3.-------------------------
                memStream.Write(endBoundary, 0, endBoundary.Length);
                var tempBuffer = new byte[memStream.Length];
                memStream.Read(tempBuffer, 0, tempBuffer.Length);
                var bytess = webclient.UploadData(url, tempBuffer);
                //var bytess = webclient.UploadFile(url, item.FilePath);
                string res = Encoding.UTF8.GetString(bytess);
                Console.WriteLine(res);
                item.TaskSts = TaskStatus.SUCCESS;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        private void SendFileToDevice(SocketFileInfo item)
        {
            try
            {
                int    BufferSize = 1024;
                byte[] buffer     = new byte[256];
                byte[] fileBuffer = new byte[BufferSize];

                using (FileStream reader = new FileStream(item.FilePath, FileMode.Open, FileAccess.Read, FileShare.None))
                {
                    long send   = 0L;
                    long length = reader.Length;

                    string fileName = Path.GetFileName(item.FilePath);
                    string sendStr  = "Req=1001|" + "FileName=" + fileName + "|" + "FileSize=" + length.ToString();
                    clientSock.Send(Encoding.Default.GetBytes(sendStr));

                    clientSock.Receive(buffer);
                    string mes = Encoding.Default.GetString(buffer);

                    if (mes.Contains("OK"))
                    {
                        Console.WriteLine("Sending file:" + fileName + ".Plz wait...");
                        int read, sent;
                        while ((read = reader.Read(fileBuffer, 0, BufferSize)) != 0)
                        {
                            sent = 0;
                            while ((sent += clientSock.Send(fileBuffer, sent, read, SocketFlags.None)) < read)
                            {
                                send += (long)sent;
                            }
                        }
                        Console.WriteLine("Send finish.\n");
                    }
                    item.TaskSts = TaskStatus.SUCCESS;
                }

                int      count   = clientSock.Receive(buffer);
                string[] command = Encoding.UTF8.GetString(buffer, 0, count).Split('|');
                Console.WriteLine("收到" + Encoding.UTF8.GetString(buffer, 0, count));
                if (command[0] == "ACK=1001")
                {
                    string fileName = command[1].Replace("FileName=", "");
                    var    fileSize = Convert.ToInt64(command[2].Replace("FileSize=", ""));
                    clientSock.Send(Encoding.UTF8.GetBytes("ACK=OK"));
                    SocketFileInfo socketFileInfo = new SocketFileInfo()
                    {
                        FilePath = path + fileName, TimeStamp = DateTime.Now.ToString(), FileSize = fileSize, TaskSts = TaskStatus.NONE
                    };
                    long receive = 0L;
                    using (FileStream writer = new FileStream(Path.Combine(path, socketFileInfo.FilePath), FileMode.Create, FileAccess.Write, FileShare.None))
                    {
                        int received;
                        while (receive < socketFileInfo.FileSize)
                        {
                            received = clientSock.Receive(buffer);
                            writer.Write(buffer, 0, received);
                            writer.Flush();
                            receive += (long)received;
                        }
                    }
                    socketFileInfo.FilePath = Path.Combine(path, socketFileInfo.FilePath);
                    Console.WriteLine("Receive finish.\n");
                    this.Dispatcher.Invoke(new Action(() => { recvFiles.Add(socketFileInfo); }));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        private void SendFileToDevice(SocketFileInfo item)
        {
            try
            {
                var url        = httpUrl + "upload";
                var memStream  = new MemoryStream();
                var webRequest = (HttpWebRequest)WebRequest.Create(url);

                var boundary      = "---------------" + DateTime.Now.Ticks.ToString("x");
                var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
                var endBoundary   = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n");

                // 设置属性
                webRequest.Method      = "POST";
                webRequest.Timeout     = 5000;
                webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
                webRequest.Accept      = @"*/*";
                webRequest.Headers.Add("Accept-Encoding", "gzip,deflate,br,sdch");

                var    fileInfo    = new FileInfo(item.FilePath);
                var    size        = fileInfo.Length;
                var    envpath     = fileInfo.DirectoryName;
                string newfilename = "new" + fileInfo.Name;
                string newpath     = envpath + @"\" + newfilename;

                string filePartHeader = "Content-Disposition:form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type:application/t\r\n\r\n";

                var header      = string.Format(filePartHeader, "file", newpath);
                var headerbytes = Encoding.ASCII.GetBytes(header);
                memStream.Write(beginBoundary, 0, beginBoundary.Length);
                memStream.Write(headerbytes, 0, headerbytes.Length);

                var base64string = File.ReadAllText(item.FilePath) + "\r\n";
                var readText     = Encoding.UTF8.GetBytes(base64string);
                memStream.Write(readText, 0, readText.Length);
                // 写入最后的结束边界符------------ 3.-------------------------
                memStream.Write(endBoundary, 0, endBoundary.Length);

                webRequest.ContentLength = memStream.Length;

                var requestStream = webRequest.GetRequestStream();
                memStream.Position = 0;
                var tempBuffer = new byte[memStream.Length];
                memStream.Read(tempBuffer, 0, tempBuffer.Length);
                requestStream.Write(tempBuffer, 0, tempBuffer.Length);

                //响应 ------------------- 4.-----------------------------------
                var    httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
                string responseContent;
                using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.GetEncoding("utf-8")))
                {
                    responseContent = httpStreamReader.ReadToEnd();
                }
                Console.WriteLine(responseContent);
                httpWebResponse.Close();
                webRequest.Abort();
                //fileStream.Close();
                memStream.Close();
                item.TaskSts = TaskStatus.SUCCESS;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        private bool DownloadFile(string fileName)
        {
            try
            {
                var memStream = new MemoryStream();
                var boundary  = "---------------" + DateTime.Now.Ticks.ToString("x");
                // 边界符
                var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
                // 最后的结束符
                var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n");

                var            url     = httpUrl + "download";
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                request.Method      = "POST";
                request.ContentType = "multipart/form-data; boundary=" + boundary;
                request.Accept      = "*/*";
                request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
                string stringKeyHeader = "--" + boundary + "\r\nContent-Disposition:form-data; name=\"{0}\"\r\n\r\n{1}\r\n";
                var    dataByte        = Encoding.ASCII.GetBytes(string.Format(stringKeyHeader, "filename", fileName));
                memStream.Write(dataByte, 0, dataByte.Length);//循环写入 参数  

                stringKeyHeader = "--" + boundary + "\r\nContent-Disposition:form-data; name=\"{0}\"\r\n\r\n{1}\r\n";
                var dataByte1 = Encoding.ASCII.GetBytes(string.Format(stringKeyHeader, "path", "upload/"));
                memStream.Write(dataByte1, 0, dataByte1.Length);//循环写入 参数  

                memStream.Write(endBoundary, 0, endBoundary.Length);

                var requestStream = request.GetRequestStream();

                memStream.Position = 0;
                var tempBuffer = new byte[memStream.Length];
                memStream.Read(tempBuffer, 0, tempBuffer.Length);

                requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                //发送请求并获取相应回应数据
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                //直到request.GetResponse()程序才开始向目标网页发送Post请求
                Stream responseStream = response.GetResponseStream();

                //创建本地文件写入流
                Stream stream = new FileStream(path + fileName, FileMode.Create);

                byte[] bArr = new byte[1024];
                int    size = responseStream.Read(bArr, 0, (int)bArr.Length);
                while (size > 0)
                {
                    stream.Write(bArr, 0, size);
                    size = responseStream.Read(bArr, 0, (int)bArr.Length);
                }
                stream.Flush();
                stream.Close();
                responseStream.Close();
                SocketFileInfo socketFile = new SocketFileInfo()
                {
                    FilePath = path + fileName, TimeStamp = DateTime.Now.ToString(), FileSize = new FileInfo(path + fileName).Length, TaskSts = TaskStatus.NONE
                };
                this.Dispatcher.Invoke(new Action(() => { recvFiles.Add(socketFile); }));
                return(true);
            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.ToString());
                return(false);
            }
        }