学IT就来ACCP教程网
您的位置:ACCP教程网图文教程Silverlight教程 ┳ 内容

Silverlight使用Web Service进行文件上传

时间:2009-11-28 11:36:10 |来源:网络 |作者:秩名 |点击:

Silverlight跨浏览器支持已经有了长足的进步,而且与.NET开发语言的完美结合,这些都使得在Windows平台下开发富客户端应用Silverlight应该比Flash更有优势,当然Silverlight代替Flash应该为时尚早,而且现有的功能与Flash仍有不小差距,但是对于开发者而言早一点接触、使用的话,对于改进网站用户的体验,提高网站的交互能力和界面很有帮助。

  本文就如何使用Silverlight调用Web Service进行文件上传,Silverlight用于界面显示、用户选择上传的文件、上传过程的显示(进度条)、多文件上传状态显示;web service中提供的方法将接收到的客户端发送来的文件保存到服务器的特定目录并将上传文件信息保存到XML文件。因为上传的文件一般用于向其他用户提供下载共享,所以XML文件中保存的信息是用于后续的下载信息提供源,主要包括文件名、文件大小、上传时间、下载次数、最后下载时间等。XML文件的存取采用的方法是XML序列化和反序列化。

  文件下载部分的实现比较容易,后续会发布基于Silverlight的下载界面以及代码。

  上传页面构成:

  DataGrid控件用于显示用户选定的待上传文件;

  按钮“选择上传文件”点击之后打开选择文件对话框用户可以选择多个文件;

  按钮“清除”,点击之后将DataGrid中的内容清空;

  按钮“上传”,点击之后如果DataGrid中内容不为空,则开始逐个上传所有文件。 页面如下图所示:

Silverlight结合Web Service进行文件上传    Silverlight结合Web Service进行文件上传

上述界面对应的page.xaml如下:

 <UserControl
xmlns:data="clr-namespace:System.Windows.
Controls;assembly=System.Windows.Controls.Data"
xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
x:Class="SilverlightApplication1.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="600" Width="800" >
<Grid x:Name="LayoutRoot" Background="YellowGreen" ShowGridLines="True" >
<Grid.RowDefinitions>
<RowDefinition Height="535"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="35"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Grid.Row="2" Orientation="Horizontal" >
<Button Content="选择上传文件" x:Name="MyButton" Width="100" Height="20" Click="Mybutton_Click" Grid.Column="0" FontSize="12"></Button>
<Button Content="清除" x:Name="MyReset" Width="100" Height="20" Click="MyReset_Click" Grid.Column="1" FontSize="12"></Button>
<Button Content="上传" x:Name="Upload" Width="100" Height="20" Click="Upload_Click" Grid.Column="2" FontSize="12"></Button>
</StackPanel>
<StackPanel Grid.Row="1" VerticalAlignment="Center">
<ProgressBar Name="progFile" Height="20" Width="800"></ProgressBar>
</StackPanel>
<Grid Grid.Row="0">
<data:DataGrid Name="FileList" LoadingRow="DataGrid_LoadingRow">
</data:DataGrid>
</Grid>
</Grid>
</UserControl>

共 3 页
  • 123
    顶一下
    (2)
    100%
    踩一下
    (0)
    0%
    loading.. 评论加载中....