完整的代码如下:
/// <summary>
/// 下载按钮点击事件
/// </summary>
private void Download_Click(object sender, RoutedEventArgs e)
{
string filePath = "http://localhost:34270/ClientBin/test.rar";
WebRequest request = WebRequest.Create(filePath);
//判断是否需要下载
bool needDownload = false;
SaveFileDialog sfd = new SaveFileDialog();
string extension = System.IO.Path.GetExtension(filePath);
sfd.Filter = string.Format("*{0}| *{0}", extension);
if (sfd.ShowDialog() == true)
{
needDownload = true;
}
if (needDownload)
{
request.BeginGetResponse((responseAsyncCallBack) =>
{
this.Dispatcher.BeginInvoke(() =>
{
using (Stream openFileStream = sfd.OpenFile())
{
#region 获取response bytes
WebResponse response = request.EndGetResponse(responseAsyncCallBack);
Stream responseStream = response.GetResponseStream();
Byte[] bufferBytes = new Byte[responseStream.Length];
responseStream.Read(bufferBytes, 0, bufferBytes.Length);
#endregion
openFileStream.Write(bufferBytes, 0, bufferBytes.Length);
openFileStream.Flush();
}
});
}, null);
}
}