使用silverlight3 实现文件下载 Webclient(WebService)

silverlight3 MainPage.xaml如下:

<UserControl x:Class="SilverlightApplication2.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 

    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" >

    <Grid x:Name="LayoutRoot">

        <Button Content="下载文件" Height=" 20" Width=" 100" Click="Button_Click" ></Button>

        <ProgressBar x:Name="progressbar1" Width="300" Height="10" Margin="0,70,20,20"></ProgressBar>

        <TextBlock x:Name="txtinfo" Text=" ss"  Margin="0,150,20,20" Width=" 300" Height=" 50"/>

    </Grid>

</UserControl>







MainPage.xaml.cs如下:



using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using System.IO;





namespace SilverlightApplication2

{

    public partial class MainPage : UserControl

    {

        public MainPage()

        {

            InitializeComponent();

        }



        private void Button_Click(object sender, RoutedEventArgs e)

        {

            //_file 要下载的文件路径

            string _file = "http://localhost:1490/aa.rar"; //这里改成你网站里的文件路径

            SaveFileDialog sf = new SaveFileDialog();

            if (sf.ShowDialog() != true) return;

            Stream  clientStream = sf.OpenFile();

            Uri _uri = new Uri(_file, UriKind.Absolute);

            WebClient client = new WebClient();

            if (client.IsBusy)

            {

                client.CancelAsync();

            }

            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);

            client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);

  

            client.OpenReadAsync(_uri, clientStream);

            

        }





        void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)

        {

            if (e.Error != null)

            {

                txtinfo.Text += e.Error.Message;

                return;

            }

            if (e.Cancelled != true)

            {

                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 client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)

        {

            progressbar1.Value =(double) e.ProgressPercentage;

            txtinfo.Text = string.Format("完成的百分比:{0}\r\n已下载的字节数:{1}\r\n数要载的总字节数:{2}\r\n",

                                   e.ProgressPercentage.ToString(),

                                   e.BytesReceived.ToString(),

                                   e.TotalBytesToReceive.ToString());

        }



    }

}
使用silverlight3 实现文件下载 Webclient(WebService)

你可能感兴趣的:(silverlight)