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         }
View Code

相关文章: