1.上传
1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 OpenFileDialog openFileDialog = new OpenFileDialog() 4 { //弹出打开文件对话框要求用户自己选择在本地端打开的图片文件 5 Filter = "Jpeg Files (*.jpg)|*.jpg|All Files(*.*)|*.*", 6 Multiselect = false //不允许多选 7 }; 8 9 if (openFileDialog.ShowDialog() == true)//.DialogResult.OK) 10 { 11 //fileinfo = openFileDialog.Files; //取得所选择的文件,其中Name为文件名字段,作为绑定字段显示在前端 12 FileInfo fileinfo = openFileDialog.File; 13 14 if (fileinfo != null) 15 { 16 WebClient webclient = new WebClient(); 17 18 string uploadFileName = fileinfo.Name.ToString(); //获取所选文件的名字 19 20 #region 把文件上传到服务器上 21 22 Uri upTargetUri = new Uri(String.Format("http://localhost:" + HtmlPage.Document.DocumentUri.Port + "/WebClientUpLoadStreamHandler.ashx?fileName={0}", uploadFileName), UriKind.Absolute); //指定上传处理程序 23 24 webclient.OpenWriteCompleted += new OpenWriteCompletedEventHandler(webclient_OpenWriteCompleted); 25 webclient.Headers["Content-Type"] = "multipart/form-data";//"application/x-www-form-urlencoded";// 26 27 webclient.OpenWriteAsync(upTargetUri, "POST", fileinfo.OpenRead()); 28 webclient.WriteStreamClosed += new WriteStreamClosedEventHandler(webclient_WriteStreamClosed); 29 30 #endregion 31 32 } 33 else 34 { 35 MessageBox.Show("请选取想要上载的图片!!!"); 36 } 37 } 38 39 } 40 void webclient_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e) 41 { 42 43 //将图片数据流发送到服务器上 44 45 // e.UserState - 需要上传的流(客户端流) 46 Stream clientStream = e.UserState as Stream; 47 // e.Result - 目标地址的流(服务端流) 48 Stream serverStream = e.Result; 49 byte[] buffer = new byte[clientStream.Length]; 50 int readcount = 0; 51 // clientStream.Read - 将需要上传的流读取到指定的字节数组中 52 while ((readcount = clientStream.Read(buffer, 0, buffer.Length)) > 0) 53 { 54 // serverStream.Write - 将指定的字节数组写入到目标地址的流 55 serverStream.Write(buffer, 0, readcount); 56 } 57 serverStream.Close(); 58 clientStream.Close(); 59 } 60 void webclient_WriteStreamClosed(object sender, WriteStreamClosedEventArgs e) 61 { 62 //判断写入是否有异常 63 if (e.Error != null) 64 { 65 System.Windows.Browser.HtmlPage.Window.Alert(e.Error.Message.ToString()); 66 } 67 else 68 { 69 System.Windows.Browser.HtmlPage.Window.Alert("文件上传成功!!!"); 70 } 71 }