Silverlight结合Web Service进行文件上传

博客地址:http://www.intersense.net/z-blog

发布软件:Live Writer + Code Formatter for Windows Live Writer

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

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

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

源代码下载:

SilverlightApplication1.Web.rar 

SilverlightApplication1.rar

上传页面构成:

  • DataGrid控件用于显示用户选定的待上传文件;
  • 按钮“选择上传文件”点击之后打开选择文件对话框用户可以选择多个文件;
  • 按钮“清除”,点击之后将DataGrid中的内容清空;
  • 按钮“上传”,点击之后如果DataGrid中内容不为空,则开始逐个上传所有文件。 页面如下图所示:

tmpD597    tmp398

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


Code

上传界面的后台代码Page.xaml.cs:


Code

Web Service代码:

Code 

还有两个用于序列化xml的辅助类:

FileDown类表示上传的文件,提供下载时需要的一些信息如文件名、文件大小、下载次数、上传时间、最后下载时间等,FileDownCollection类对应的是整个XML文件,类中包含一个ArrayList,其元素皆为FileDown类型,使用XML序列化和反序列化能够轻松地进行信息的存取。


Code
posted @ 2009-05-25 11:24  intersense  阅读(2238)  评论(7编辑  收藏  举报