Silverlight文件上传下载实现方法(下载保存)

2019-12-30 11:12:34于丽
  • //BitmapImage bitmap = new BitmapImage();  //bitmap.SetSource(stream); 
  • //imgDownLoad.Source = bitmap;  Stream clientStream = e.UserState as Stream; 
  • Stream serverStream = (Stream)e.Result;  byte[] buffer = new byte[serverStream.Length]; 
  • serverStream.Read(buffer, 0, buffer.Length);  clientStream.Write(buffer, 0, buffer.Length); 
  • clientStream.Close();  serverStream.Close(); 
  •   } 
  •    
  •   } 
  •   void clientDownloadStream_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
  • {  //DownloadProgressChangedEventArgs.ProgressPercentage - 下载完成的百分比 
  • //DownloadProgressChangedEventArgs.BytesReceived - 当前收到的字节数  //DownloadProgressChangedEventArgs.TotalBytesToReceive - 总共需要下载的字节数 
  • //DownloadProgressChangedEventArgs.UserState - 用户标识   
  • this.tbMsgString.Text = string.Format("完成百分比:{0} 当前收到的字节数:{1} 资料大小:{2} ",  e.ProgressPercentage.ToString() + "%", 
  • e.BytesReceived.ToString(),  e.TotalBytesToReceive.ToString()); 
  •   } 
  •   #endregion 
  •   #region 上传图片 
  • private void btnUpLoad_Click(object sender, RoutedEventArgs e)  { 
  • /**/  /* 
  • *   OpenWriteCompleted - 在打开用于上传的流完成时(包括取消操作及有错误发生时)所触发的事件  *   WriteStreamClosed - 在写入数据流的异步操作完成时(包括取消操作及有错误发生时)所触发的事件 
  • *   UploadProgressChanged - 上传数据过程中所触发的事件。如果调用 OpenWriteAsync() 则不会触发此事件  *   Headers - 与请求相关的的标头的 key/value 对** 
  • *   OpenWriteAsync(Uri address, string method, Object userToken) - 打开流以使用指定的方法向指定的 URI 写入数据  *     Uri address - 接收上传数据的 URI 
  • *     string method - 所使用的 HTTP 方法(POST 或 GET)  *     Object userToken - 需要上传的数据流